/* AMX Mod script. * * Warcraft 3: Frozen Throne * by Pimp Daddy (OoTOAoO) * http://www.4hm.net * * Credits to: * Spacedude (for War3 MOD) * Ludwig Van (for flamethrower) * OLO (for spectating rank info) * JGHG for the mole code * [AOL]Demandred, [AOL]LuckyJ for help coding it for steam * [AOL]Demandred for freezetime exploit fix * Denkkar for some of his code (ie. STEAM_POWERED) * Everyone at amxmod.net for help * joecool12321 for various health related fixes * Tri Moon for various improvements (No Race, war3menu, etc...) * xeroblood for spotting some bugs for me :) * bad-at-this for contributing the status bar code used for godmode (big bad voodoo) * kamikaze for... help w/testing version before release always helping people out on the forums contributing code for the anti-skywalking * lui for the delayed ultimate code * The following people helped convert the text to German: Walken / Altegarde.com Fire ^^plan.los^^ * The following people helped convert the text to French: laurent5425 neko */ #include #include #include #include #if !defined _amxmodx_included #include #include #else #include #endif //VERSION NAME AUTHOR new WC3NAME[] = "Warcraft 3 Frozen Throne" new WC3AUTHOR[] = "Pimp Daddy (OoTOAoO)" new WC3VERSION[] = "1.6.7" // // THESE ARE THE ONLY OPTIONS THAT NEED TO BE CHANGED DURING COMPILE TIME #define STEAM_POWERED 1 // Set this to 0 if you are running Counterstrike 1.5, leave at 1 for 1.6 #define CSSTATS_ENABLED 0 // Set this to 0 if you don't want spectating rank information #define ADMIN_LEVEL_WC3 ADMIN_LEVEL_A // set the admin level required for giving xp and accessing the admin menu (see amxconst.inc) // Language Options #if !defined LANG_ENG #define LANG_ENG 1 // Set this to 1 to use english (ALL LANGUAGE WILL BE LANG_ENG) #endif #if !defined LANG_GER #define LANG_GER 0 // Set this to 1 if you would like *MOST* of the language to be in German #endif #if !defined LANG_FRE #define LANG_FRE 0 // Set this to 1 if you would like *MOST* of the language to be in French #endif #if ((LANG_ENG + LANG_GER + LANG_FRE) != 1) new thereshouldbeaneerorherebecausethiswordiswaytoolongforavariable = 0 // You have more than one language selected if there is a warning here #endif #if STEAM_POWERED new zoomed[33] #endif #if CSSTATS_ENABLED #include #endif // ****** Item and Race Information #if LANG_GER new racename[10][] = {"keine Rasse","Untote Plage","Menschliche Allianz","Orkische Horde","Nachtelfen von Kalimdor","Blutmagier","Schattenjaeger","Waechter","Crypt Lord","Chemaeleon"} new shortracename[10][] = {"keine Rasse","Untote","Menschen","Ork","Nachtelfe","Blutmagier","Schattenjaeger","Waechter","Crypt Lord","Chameleon"} new itemname[9][] = {"Ankh der Reinkarnation","Stiefel der Geschwindigkeit","Klauen des Angriffs","Mantel des Schattens","Maske des Todes","Kette der Immunität","Frostkugel","Gesundheitsstein","Buch der Erfahrung"} new shortitemname[9][] = {"Ankh","Stiefel","Klauen","Mantel","Maske","Kette","Kugel","Stein","Buch"} new itemname2[9][] = {"Rolle der Wiederbelebung","Schutz des Maulwurfs","Helm der Vortrefflichkeit","Amulet der Katze","Ferdersocken","Brennende Handschuhe der Waerme","Ring der Regeneration +1","Chamaeleon","Maulwurf"} new shortitemname2[9][] = {"Rolle","Schutz","Helm","Amulet","Socken","Handschuhe","Ring","Chemaeleon","Maulwurf"} new race1skill[4][] = {"Vampir Aura","Unheilige Aura","Schweben","Selbstmord-Bomber"} new race2skill[4][] = {"Unsichtbarkeit","Aura der Hingabe","Hieb","Telepodertieren"} new race3skill[4][] = {"Kritischer Treffer","Kritische Granaten","Ausrüstungs Reinkarnation","Kettenblitz"} new race4skill[4][] = {"Ausweichen","Dornen Aura","Schadens Aura","Wucherwurzeln"} new race5skill[4][] = {"Pheonix","Verbannung","Mana Klau","Flamen Angriff"} new race6skill[4][] = {"Welle der Heilung","Hex","Schlangen Waechter","Voodoozauber"} new race7skill[4][] = {"Faechernde Messer","Blinzeln","Schattenschlag","Blutrache"} new race8skill[4][] = {"Aufspießen","Stachelruestung","Aas Kaefer","Heuschrecken Schwarm"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} #endif #if LANG_FRE //Change 10/07/2004 new racename[10][] = {"Aucune Race","Fleau Mort-Vivant","Alliance Humaine","la Horde Orque","Elfe de la nuit","Mage de Sang","Chasseur de l'Ombre","Gardien","Seigneur de la Crypte","Metamorphe"} new shortracename[10][] = {"Aucune Race","Mort-Vivant","Humain","Orc","Elfe","Mage","Chasseur","Gardien","Seigneur","Metamorphe"} new itemname[9][] = {"Ankh de Reincarnation","Bottes de vitesse","Griffes d'Attaque","Manteau de l'Ombre","Masque de Mort","Collier d'Immunite","Orbe de Givre","Fetiche de Sante","Tome d'Experience"} new shortitemname[9][] = {"Ankh","Bottes","Griffes","Manteau","Masque","Collier","Orbe","Fetiche","Tome"} new itemname2[9][] = {"Parchemin de Renaissance","Protection Agent-Double","Haume d'Excellence","Amulette du Chat","Chausse de Plume","Gants Flamboyant de chaleur","Anneau de regeneration +1","Cameleon","Agent Double"} new shortitemname2[9][] = {"Parchemin","Protection","Haume","Amulette","Chausse","Gants","Anneau","Cameleon","Agent"} new race1skill[4][] = {"Aura Vampirique","Aura Impie","Levitation","Bombe-Kamikaze"} new race2skill[4][] = {"Invisibilite","Aura de Devotion","Assomer","Teleportation"} new race3skill[4][] = {"Coup Critique","Super Grenade","Reincarnation de l'Equipement","Chaine d'eclair"} new race4skill[4][] = {"Esquive","Aura de Ronce","Aura de precision","Sarments"} new race5skill[4][] = {"Pheonix","Bannissement","Siphon de Mana","Frappe de Feu"} new race6skill[4][] = {"Aura de Guerison","Sortilege","Gardien Serpent","Armure Divine"} new race7skill[4][] = {"Tourbillon de lames","Transfert","Choc des tenebres","Vengeance"} new race8skill[4][] = {"Empaler","Armure Epineuse","Scarabees Charognards","Essaim de Sauterelles"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} //End Change /* new racename[10][] = {"Aucune Race","Fleau Mort-Vivant","Alliance Humaine","la Horde Orque","Elfe de la nuit","Mage de Sang","Chasseur de l'Ombre","Gardien","Seigneur de la Crypte","Cameleon"} new shortracename[10][] = {"Aucune Race","Mort-Vivant","Humain","Orc","Elfe","Mage","Chasseur","Gardien","Seigneur","Chameleon"} new itemname[9][] = {"Ankh de Reincarnation","Bottes de vitesse","Griffes d'Attaque","Manteau de l'Ombre","Masque de Mort","Collier d'Immunite","Orbe de Givre","Fetiche de Sante","Tome d'Experience"} new shortitemname[9][] = {"Ankh","Bottes","Griffes","Manteau","Masque","Collier","Orbe","Fetiche","Tome"} new itemname2[9][] = {"Parchemin de Renaissance","Mole Protectant","Haume d'Excellence","Amulette du Chat","Chausse de Plume","Gants Flamboyant de chaleur","Anneau de regeneration +1","Cameleon","Mole"} new shortitemname2[9][] = {"Parchemin","Protectant","Haume","Amulette","Chausse","Gants","Anneau","Cameleon","Mole"} new race1skill[4][] = {"Aura Vampirique","Aura Impie","Levitation","Bombe-Kamikaze"} new race2skill[4][] = {"Invisibilite","Aura de Devotion","Assomer","Teleportation"} new race3skill[4][] = {"Coup Critique","Super Grenade","Reincarnation de l'Equipement","Chaine d'eclair"} new race4skill[4][] = {"Esquive","Aura de Ronce","Aura de precision","Sarments"} new race5skill[4][] = {"Pheonix","Bannissement","Siphon de Mana","Frappe de Feu"} new race6skill[4][] = {"Aura de Guerison","Sortilege","Gardien Serpent","Armure Divine"} new race7skill[4][] = {"Attaque de couteaux","Blink","Shadow Strike","Vengeance"} new race8skill[4][] = {"Empaler","Armure Epineuse","Scarabees Charognards","Essaim de Sauterelles"} new race9skill[4][] = {"ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE","ENTERVALUEENTERVALUE"} */ #endif #if LANG_ENG new racename[10][] = {"No race","Undead Scourge","Human Alliance","Orcish Horde","Night Elves of Kalimdor","Blood Mage","Shadow Hunter","Warden","Crypt Lord","Chameleon"} new shortracename[10][] = {"No race","Undead","Human","Orc","Night Elf","Blood Mage","Shadow Hunter","Warden","Crypt Lord","Chameleon"} new itemname[9][] = {"Ankh of Reincarnation","Boots of Speed","Claws of Attack","Cloak of Shadows","Mask of Death","Necklace of Immunity","Orb of Frost","Periapt of Health","Tome of Experience"} new shortitemname[9][] = {"Ankh","Boots","Claws","Cloak","Mask","Necklace","Orb","Periapt","Tome"} new itemname2[9][] = {"Scroll of Respawning","Mole Protectant","Helm of Excellence","Amulet of the Cat","Sock of the Feather","Flaming Gloves of Warmth","Ring of Regeneration +1","Chameleon","Mole"} new shortitemname2[9][] = {"Scroll","Protectant","Helm","Amulet","Sock","Gloves","Ring","Chameleon","Mole"} new race1skill[4][] = {"Vampiric Aura","Unholy Aura","Levitation","Suicide Bomber"} new race2skill[4][] = {"Invisibility","Devotion Aura","Bash","Teleport"} new race3skill[4][] = {"Critical Strike","Critical Grenade","Equipment Reincarnation","Chain Lightning"} new race4skill[4][] = {"Evasion","Thorns Aura","Trueshot Aura","Entangle Roots"} new race5skill[4][] = {"Pheonix","Banish","Siphon Mana","Flame Strike"} new race6skill[4][] = {"Healing Wave","Hex","Serpent Ward","Big Bad Voodoo"} new race7skill[4][] = {"Fan of Knives","Blink","Shadow Strike","Vengeance"} new race8skill[4][] = {"Impale","Spiked Carapace","Carrion Beetles","Locust Swarm"} new race9skill[4][] = {"ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE","ENTERVALUEENTERVALUEENTERVALUEENTERVALUE"} #endif // ****** End Item and Race Information //Race9 Setup new race9Options[5] = {0,1,1,1,1} // the value is what race that skill should be copied from so race9Options[1] = 1 means that skill1 is undead skill1 this means you can not have skill 1 form more than one race. // this default setting of 0,1,1,1,1 will make the 9th race have all the undead skills // note that the first value does not do anything. new MOD[32]={"AMX"} new VIP_ESCAPE_BONUS new VIP_KILL_BONUS new DEFUSER_KILL_BONUS new KILL_BOMB_CARRIER new BOMBPLANTXP new DEFUSEXP new HOSTAGEXP new KILLRESCUEMANXP new XPBONUS new HEADSHOT_BONUS new ROUNDXP // Team Numbers for get_user_team(id) #define SPEC 0 #define TEAM_T 1 #define TEAM_CT 2 // NEVER CHANGE THESE !!! DISASTEROUS RESULTS #define TE_BEAMPOINTS 0 #define TE_EXPLOSION 3 #define TE_EXPLFLAG_NONE 0 #define TE_SMOKE 5 #define TE_BEAMENTS 8 #define TE_IMPLOSION 14 #define TE_SPRITETRAIL 15 #define TE_BEAMCYLINDER 21 #define TE_BEAMFOLLOW 22 #define TE_ELIGHT 28 #define TE_PLAYERATTACHMENT 124 #define TE_LARGEFUNNEL 100 #define MAX_NAME_LENGTH 31 #define MAX_VAR_LENGTH 64 // END // Do not change these #define MAXGLOW 150 #define ULTIMATESEARCHTIME 50 #define TELEPORT_RADIUS 50 #define LIGHTNING_RANGE 500 //END // Shopmenu Items #define BOOTSPEED 275.0 #define CLAWSOFATTACK 6 #define CLOAKINVISIBILITY 150 #define MASKPERCENT 0.3 #define FROSTSPEED 125.0 #define HEALTHBONUS 15 //END // User stats parms id #define STATS_KILLS 0 #define STATS_DEATHS 1 #define STATS_HS 2 #define STATS_TKS 3 #define STATS_SHOTS 4 #define STATS_HITS 5 #define STATS_DAMAGE 6 #define ANKH 1 #define BOOTS 2 #define CLAWS 3 #define CLOAK 4 #define MASK 5 #define IMMUNITY 6 #define FROST 7 #define HEALTH 8 #define TOME 9 #define RESPAWN 1 #define PROTECTANT 2 #define HELM 3 #define CAT 4 #define FEATHER 5 #define INFERNO 6 #define REGEN 7 #define CHAMELEON 8 #define MOLE 9 // team ids #define UNASSIGNED 0 #define TS 1 #define CTS 2 #define AUTO_TEAM 5 // For Icon events #define ICON_HIDE 0 #define ICON_SHOW 1 #define ICON_FLASH 2 // Added by NeKo //For Controller Event new FT_start //hour to start plugin new FT_stop //hour to stop plugin new FT_control //enable time controler new FT_message //Blood definition #define TE_BLOODSTREAM 101 #define TE_BLOOD 103 #define TE_BLOODSPRITE 115 #define TE_WORLDDECAL 116 //new bloodinter = 100 //new bloodquantite = 7 // Temporary Fix for HE nades not being read in czero new Float:he_origin[33][3] // End Temporary Fix new bool:wc3_empty_server= true new bool:showicons[33] new bool:u_delay = false new bool:no_he = false new bool:buycalled=false new bool:buytime new bool:game_commence[33]=false new bool:gotShield[33] new bool:resetskill[33] new bool:teleportmenu[33] new bool:givenade new bool:hasgodmode[33] new bool:pheonix[33] new bool:skinchanged[33] new bool:givepistol new bool:give_items[33] = false new bool:playerhasspawned[33] new bool:spawnedfromitem[33] = false new bool:ismole[33]=false new bool:justgivennade[33] = false new bool:itemsrunning[33] = false new bool:g_specMode[33] new bool:blinkdelayed[33] new bool:menupend[33] = false new bool:to_be_revived[33] = false // Sprites new shadow new snow new fire new burning new grunt new g_sModelIndexFireball new g_sModelIndexSmoke new iBeam4 new m_iTrail new m_iSpriteTexture new lightning new flaresprite // Crap added by NeKo/Pimp Daddy new race_1 new race_2 new race_3 new race_4 new race_5 new race_6 new race_7 new race_8 new race_9 new race_0 new level_0 new level_1 new level_2 new level_3 new level_4 new level_5 new level_6 new level_7 new level_8 new level_9 new level_10 // Added by NeKo new spr_blood_spray new spr_blood_drop // End Added by NeKo /* new ankh new boots new cat new chameleon new claws new cloak new feather new frost new healthitem new helm new immunity new inferno new mask new mole new protectant new regen new respawn new tome */ // Captured Messages new gmsgStatusText new gmsgDeathMsg new gmsgFade new gmsgShake new gmsgIcon new deathmessageshown[33] new g_friend[33] new bombDefuserIndex[33] new bombCarrier new bombdefuser new mysql new mysqltablename[64] new alive_before_explosion[33] = false new suicideAttempt[33] new vipID = 0 new savedOldLoc[33][3] new savedNewLoc[33][3] new teleportid[33][32] new godshealth[33] new flashg[33] new freezetime = 0 new freezecalled = 0 new isburning[33] new flame_count[33] new healinghit[33] new serpentteam[33] new pheonixexistsT new pheonixexistsCT new hasblink[33] = false new carrioncount[33]=2 new spawnEntString[2][] = {"info_player_start","info_player_deathmatch"} new shadowcount[33] = 2 new rings[33] new nadetime[33] new p_level[33] new p_skills[33][5] new iglow[33][4] new armorondeath[33] new savedweapons[33][32] new savednumber[33] = 0 new playerxp[33] new playeritem[33] new playeritem2[33] new bool:isBuyzone[33] new bool:p_evadenextshot[33] new bool:diedlastround[33] new bool:stunned[33] new bool:slowed[33] new bool:issearching[33] new bool:lightninghit[33] new bool:ultimateused[33] new bool:hasdefuse[33] new bool:helmet[33] new bool:changingteam[33] new bool:knifeselected[33] new bool:warcraft3 new bool:endround new Float:voting new Float:vote_ratio new option new hostagesaver new serpents[33] new he[33] /* new CTSkins[4][]={"sas","gsg9","urban","gign"} new TSkins[4][]={"arctic","leet","guerilla","terror"} */ //Change 10/07/2004 new CTSkins[5][]={"sas","gsg9","urban","gign","spetsnaz"} new TSkins[5][]={"arctic","leet","guerilla","terror","militia"} //End Change new Float:p_vampiric[3] = {0.15,0.30,0.45} // Vampiric Aura (skill 1) new p_vampirichealth[3] = {100,100,100} // Vampiric Aura Max Health (skill 1) new Float:p_unholy[3] = {265.0,285.0,320.0} // Unholy Aura (skill 2) new Float:p_levitation[3] = {0.8,0.6,0.4} // Levitation (skill 3) new p_invisibility[3] = {200,150,100} // Invisibility (skill 1) new p_devotion[3] = {115,130,145} // Devotion Aura (skill 2) new Float:p_bash[3] = {0.15,0.30,0.45} // Bash (skill 3) new Float:p_critical[3] = {0.15,0.15,0.15} // Critical Strike (skill 1) new Float:p_grenade[3] = {2.0,4.0,6.0} // Critical Grenade (skill 2) new Float:p_ankh[3] = {0.333,0.666,1.0} // Equipment reincarnation (skill 3) new Float:p_evasion[3] = {0.1,0.2,0.3} // Evasion (skill 1) new Float:p_thorns[3] = {0.05,0.1,0.15} // Thorns Aura (skill 2) new Float:p_trueshot[3] = {0.15,0.3,0.45} // Trueshot Aura (skill 3) new Float:p_pheonix[3] = {0.333,0.666,1.0} // Pheonix (skill 1) new Float:p_banish[3] = {0.07,0.13,0.20} // Banish (skill 2) new Float:p_mana[3] = {0.02,0.04,0.08} // Siphon Mana (skill 3) new Float:p_heal[3] = {6.0,4.0,2.0} // Healing Wave (skill 1) new Float:p_hex[3] = {0.05,0.10,0.15} // Hex (skill 2) new p_serpent[3] = {1,2,3} // Serpent Ward (skill 3) new Float:p_fan[3] = {0.05,0.10,0.15} // Fan of Knives (skill 1) new Float:p_blink[3] = {0.333,0.666,1.0} // Blink (skill 2) new Float:p_shadow[3] = {0.15,0.30,0.45} // Shadow Strike (skill 3) new Float:p_impale[3] = {0.15,0.30,0.45} // Impale (skill 1) new Float:p_spiked[3] = {0.05,0.1,0.15} // Spiked Carapace (skill 2) new Float:p_carrion[3] = {0.15,0.25,0.45} // Carrion Beetle (skill 3) new xplevel[11] = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} new xpgiven[11] = {60,80,100,120,140,160,180,200,220,240,260} new Float:weaponxpmultiplier[31] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0} new itemcost[9] = {1500,1500,1000,800,2000,800,2000,1000,4000} new itemcost2[9] = {5000,1500,550,1500,1500,1750,1000,9000,16000} //Change 10/07/2004 #if !defined CSW_GALIL #define CSW_GALIL 14 #endif #if !defined CSW_FAMAS #define CSW_FAMAS 15 #endif //End Change public set_xpmultiplier(){ if (!get_cvar_num("mp_weaponxpmodifier")) return PLUGIN_CONTINUE weaponxpmultiplier[CSW_USP] = 3.0 weaponxpmultiplier[CSW_DEAGLE] = 3.0 weaponxpmultiplier[CSW_GLOCK18] = 3.0 weaponxpmultiplier[CSW_ELITE] = 4.0 weaponxpmultiplier[CSW_P228] = 3.0 weaponxpmultiplier[CSW_FIVESEVEN] = 3.0 weaponxpmultiplier[CSW_XM1014] = 1.25 weaponxpmultiplier[CSW_M3] = 1.5 weaponxpmultiplier[CSW_MP5NAVY] = 1.0 weaponxpmultiplier[CSW_UMP45] = 1.25 weaponxpmultiplier[CSW_P90] = 1.25 weaponxpmultiplier[CSW_TMP] = 1.5 weaponxpmultiplier[CSW_MAC10] = 1.5 //Change 10/07/2004 #if STEAM_POWERED weaponxpmultiplier[CSW_GALIL] = 1.15 weaponxpmultiplier[CSW_FAMAS] = 1.15 #endif //End Change weaponxpmultiplier[CSW_AWP] = 1.0 weaponxpmultiplier[CSW_M4A1] = 1.0 weaponxpmultiplier[CSW_AK47] = 1.0 weaponxpmultiplier[CSW_AUG] = 1.0 weaponxpmultiplier[CSW_SG552] = 1.0 weaponxpmultiplier[CSW_G3SG1] = 1.5 weaponxpmultiplier[CSW_SG550] = 1.5 weaponxpmultiplier[CSW_M249] = 1.25 weaponxpmultiplier[CSW_SCOUT] = 3.0 weaponxpmultiplier[CSW_HEGRENADE] = 2.0 weaponxpmultiplier[CSW_KNIFE] = 6.0 weaponxpmultiplier[CSW_C4] = 2.0 weaponxpmultiplier[CSW_SMOKEGRENADE] = 1.0 weaponxpmultiplier[CSW_FLASHBANG] = 1.0 return PLUGIN_CONTINUE } public items(parm2[2]){ // Displays the player's items in the bottom center of the screen new temp[128] new message[256] new id = parm2[0] //lang definition #if LANG_FRE new _curitems[]="Objets Possedes" new _and[]="et" new _curitem[]="Objet Possede" #endif #if LANG_GER new _curitems[]="Current Items" new _and[]="und" new _curitem[]="Current Item" #endif #if LANG_ENG new _curitems[]="Current Items" new _and[]="and" new _curitem[]="Current Item" #endif // if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s %s %s x%d",_curitems,playeritem[id]?itemname[playeritem[id]-1]:"",_and,playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s %s %s",_curitems,playeritem[id]?itemname[playeritem[id]-1]:"",_and,playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN) format(temp,127,"%s: %s x%d",_curitem,playeritem2[id]?itemname2[playeritem2[id]-1]:"",rings[id]) else format(temp,127,"%s: %s",_curitem,playeritem2[id]?itemname2[playeritem2[id]-1]:"") } if (playeritem[id]!=0 && playeritem2[id]==0) format(temp,127,"%s: %s",_curitem,playeritem[id]?itemname[playeritem[id]-1]:"") itemsrunning[id]=true add(message,255,temp) set_hudmessage(255,255,255,-1.0,0.945,2, 1.5, 40.0, 0.02, 5.0, 1) if (is_user_alive(id) && !endround) show_hudmessage(id,message) set_task(1.0,"items",451+id,parm2,2) return PLUGIN_CONTINUE } public displaylevel(id,hide){ if (id==0) return PLUGIN_CONTINUE if(get_cvar_num("FT_items_in_hud")){ new parm2[2] parm2[0] = id if(!itemsrunning[id] && !endround) items(parm2) } new oldlevel = p_level[id] if (playerxp[id]<0) playerxp[id]=0 for (new i=0; i<=10; ++i){ if (playerxp[id]>=xplevel[i]) p_level[id]=i else break } //lang definition #if LANG_FRE new _level[]="Niveau" new _and[]="et" new _yougainlevel[]="Felicitation, vous gagnez un niveau" #endif #if LANG_GER new _level[]="Level" new _and[]="und" new _yougainlevel[]="Congratulation, You gained a Level" #endif #if LANG_ENG new _level[]="Level" new _and[]="and" new _yougainlevel[]="Congratulation, You gained a Level" #endif // new xpstring[512] if(get_cvar_num("FT_items_in_hud")){ if(playeritem2[id]==0) { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d ",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,p_level[id],xplevel[10],xplevel[10]) } else { if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d ",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1]) else if (p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id],xplevel[p_level[id]+1]) else format(xpstring,511,"%s %s %d XP: %d ",racename[p_skills[id][0]],_level,p_level[id],playerxp[id]) } }else{ new temp2[128] if (playeritem[id]!=0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%s %s %s x%d",playeritem[id]?shortitemname[playeritem[id]-1]:"",_and,playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s %s %s",playeritem[id]?shortitemname[playeritem[id]-1]:"",_and,playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]==0 && playeritem2[id]!=0){ if (playeritem2[id]==REGEN && rings[id]>1) format(temp2,127,"%s x%d ",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"",rings[id]) else format(temp2,127,"%s",playeritem2[id]?shortitemname2[playeritem2[id]-1]:"") } else if (playeritem[id]!=0 && playeritem2[id]==0) format(temp2,127,"%s",playeritem[id]?shortitemname[playeritem[id]-1]:"") if (p_level[id]==0) format(xpstring,511,"%s XP: %d/%d %s",racename[p_skills[id][0]],playerxp[id],xplevel[p_level[id]+1],temp2) else if(p_level[id]<10) format(xpstring,511,"%s %s %d XP: %d/%d %s",shortracename[p_skills[id][0]],_level,p_level[id],playerxp[id], xplevel[p_level[id]+1],temp2) else format(xpstring,511,"%s %s %d XP: %d %s",shortracename[p_skills[id][0]],_level,p_level[id],playerxp[id],temp2) } message_begin( MSG_ONE, gmsgStatusText, {0,0,0}, id) write_byte(0) write_string(xpstring) message_end() if (p_level[id] > oldlevel){ // Level Gained set_hudmessage(200, 100, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2) show_hudmessage(id,_yougainlevel) if (file_exists("sound/warcraft3/levelupcaster.wav")==1 && is_user_alive(id)) emit_sound(id,CHAN_ITEM, "warcraft3/levelupcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else if (is_user_alive(id)) emit_sound(id,CHAN_ITEM, "plats/elevbell1.wav", 1.0, ATTN_NORM, 0, PITCH_LOW) } new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] while (skillsused>p_level[id]){ if (p_skills[id][4]==1 && p_level[id]<6) p_skills[id][4]=0 else if (p_skills[id][1]>=p_skills[id][2] && p_skills[id][1]>=p_skills[id][3]) --p_skills[id][1] else if (p_skills[id][2]>=p_skills[id][1] && p_skills[id][2]>=p_skills[id][3]) --p_skills[id][2] else if (p_skills[id][3]>=p_skills[id][1] && p_skills[id][3]>=p_skills[id][2]) --p_skills[id][3] skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } if (hide!=1 && p_skills[id][0]!=0 && hide!=3){ new temp[128] new message[256] format(message,255,"%s",racename[p_skills[id][0]]) if (p_level[id]){ format(temp,127,"^n%s %d",_level,p_level[id]) add(message,255,temp) } new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } else if (p_skills[id][0] == 9){ copy(skillcurrentrace[skillcounter],63,race9skill[skillcounter]) } ++skillcounter } if (p_skills[id][1]){ format(temp,127,"^n%s %s %d",skillcurrentrace[0],_level,p_skills[id][1]) add(message,255,temp) } if (p_skills[id][2]){ format(temp,127,"^n%s %s %d",skillcurrentrace[1],_level,p_skills[id][2]) add(message,255,temp) } if (p_skills[id][3]){ format(temp,127,"^n%s %s %d",skillcurrentrace[2],_level,p_skills[id][3]) add(message,255,temp) } if (p_skills[id][4]){ format(temp,127,"^n%s: %s","Ultimate",skillcurrentrace[3]) add(message,255,temp) } set_hudmessage(255, 255, 255, -1.0, 0.3, 0, 3.0, 5.0, 0.1, 0.2, 2) show_hudmessage(id,message) } if(get_cvar_num("sv_gravity")>650){ if (((p_skills[id][0] == 9 && race9Options[3] == 1) || p_skills[id][0] == 1) && p_skills[id][3] && playeritem2[id]!=FEATHER){ // Levitation if (get_user_gravity(id)!=p_levitation[p_skills[id][3]-1]) set_user_gravity(id,p_levitation[p_skills[id][3]-1]) } else if (playeritem2[id]==FEATHER) set_user_gravity(id,0.35) else if (get_user_gravity(id)!=1.0) set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (((p_skills[id][0] == 9 && race9Options[1] == 2) || p_skills[id][0] == 2) && p_skills[id][1]){ // Invisibility if (knifeselected[id]){ new invisibility = p_invisibility[p_skills[id][1]-1]/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) } else if (playeritem[id]==CLOAK){ if (knifeselected[id]){ new invisibility = CLOAKINVISIBILITY/2 set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,invisibility) } else set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) } else set_user_rendering(id) if (((p_skills[id][0] == 9 && race9Options[1] != 4) || p_skills[id][0] != 4 || !p_skills[id][1])){ // Evasion if (get_user_health(id)>=500) set_user_health(id,get_user_health(id)-1024) } new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public check_for_reviving(victim_id){ //lang definition #if LANG_FRE new _hasreviving[]="vous a fait revivre" new _youarerevived1[]="Vous avez fait revivre" new _youarerevived2[]="c'est parti !" #endif #if LANG_GER new _hasreviving[]="has revived you" new _youarerevived1[]="You have revived" new _youarerevived2[]="way to go !" #endif #if LANG_ENG new _hasreviving[]="has revived you" new _youarerevived1[]="You have revived" new _youarerevived2[]="way to go !" #endif // new players[32], numberofplayers, y get_players(players, numberofplayers) if(get_user_team(victim_id)==TEAM_T && pheonixexistsT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -0.8, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s %s",name,_hasreviving) client_print(victim_id,print_chat,"[%s] %s %s",MOD, name,_hasreviving) get_user_name(victim_id,name,31) show_hudmessage(id,"%s %s, %s",_youarerevived1,name,_youarerevived2) client_print(id,print_chat,"[%s] %s %s, %s",MOD,_youarerevived1,name,_youarerevived2) pheonixexistsT-- return PLUGIN_CONTINUE } } } else if(get_user_team(victim_id)==TEAM_CT && pheonixexistsCT>0){ for (y = 0; y < numberofplayers; ++y){ new id = players[y] if (pheonix[id] && !to_be_revived[victim_id] && !endround && id!=victim_id && !changingteam[victim_id] && is_user_alive(id) && get_user_team(id)==get_user_team(victim_id) && !is_user_alive(victim_id) && get_user_team(victim_id)!=SPEC){ pheonix[id]=false new parm[2], name[32] parm[0]=victim_id set_task(0.7,"func_spawn",2,parm,2) // Spawns player set_hudmessage(200, 100, 0, -1.6, 0.1, 0, 1.0, 5.0, 0.1, 0.2, 2) get_user_name(id,name,31) show_hudmessage(victim_id,"%s %s",name,_hasreviving) client_print(victim_id,print_chat,"[%s] %s %s",MOD, name,_hasreviving) get_user_name(victim_id,name,31) show_hudmessage(id,"%s %s, %s",_youarerevived1,name,_youarerevived2) client_print(id,print_chat,"[%s] %s %s, %s",MOD,_youarerevived1,name,_youarerevived2) to_be_revived[victim_id]=true pheonixexistsCT-- return PLUGIN_CONTINUE } } } return PLUGIN_CONTINUE } public death(){ // Called when you die if (warcraft3==false) return PLUGIN_CONTINUE new killer_id = read_data(1) new victim_id = read_data(2) new headshot = read_data(3) if (task_exists(2000+victim_id)) // Remove the function that makes you jump if you're goombad remove_task(2000+victim_id) icon_controller(victim_id,ICON_HIDE) // Remove icon because you don't have an ultimate when you're dead ismole[victim_id]=false // For use w/mole protectant if (playeritem2[victim_id]==CHAMELEON || skinchanged[victim_id]) changeskin(victim_id,1) if (playeritem2[victim_id]==HELM) set_user_hitzones(victim_id) if(playeritem2[victim_id]==RESPAWN && !changingteam[victim_id]){ new parm[2] parm[0]=victim_id parm[1]=6 if(playeritem2[victim_id]!=MOLE){ playeritem2[victim_id]=0 rings[victim_id]=0 } playeritem[victim_id]=0 set_task(0.5,"func_spawn",72,parm,2) spawnedfromitem[victim_id]=true } rings[victim_id]=0 set_user_footsteps(victim_id, 0) new weaponname[20] read_data(4,weaponname,31) new weapon get_user_attacker(victim_id,weapon) if( headshot && killer_id!=victim_id && !deathmessageshown[victim_id] && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+= HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir fait un headshot", MOD, HEADSHOT_BONUS)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? #endif } if(!deathmessageshown[victim_id] && killer_id!=victim_id && !equal(weaponname,"world")){ deathmessageshown[victim_id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(killer_id) write_byte(victim_id) write_byte(headshot) write_string(weaponname) message_end() } changingteam[victim_id]=false diedlastround[victim_id]=true if (((p_skills[victim_id][0] == 9 && race9Options[4] == 7) || p_skills[victim_id][0] == 7) && p_skills[victim_id][4] && (!hasblink[killer_id] || killer_id==victim_id) && !u_delay){ // Vengeance new parm[2] parm[0]=victim_id parm[1]=6 if(!endround && !ultimateused[victim_id]){ set_task(1.2,"func_spawn",2,parm,2) ultimateused[victim_id]=true } } else if (((p_skills[victim_id][0] == 9 && race9Options[4] == 1) || p_skills[victim_id][0] == 1) && p_skills[victim_id][4] && !hasblink[killer_id] && !changingteam[victim_id] && !u_delay){ // Suicide Bomber emit_sound(victim_id,CHAN_ITEM, "ambience/particle_suck1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm[5], origin[3] get_user_origin(victim_id,origin) parm[0]=victim_id parm[1]=6 parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"implosion",1,parm,5) set_task(0.2,"apacheexplode",2,parm,5) set_task(0.3,"blastcircles",3,parm,5) } check_for_reviving(victim_id) saveweapons(victim_id) if (killer_id && killer_id!=victim_id && victim_id){ new name[32] get_user_name(victim_id,name,31) if (get_user_team(killer_id)==get_user_team(victim_id)){ playerxp[killer_id]-=xpgiven[p_level[killer_id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]]*-1,name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]]*-1,name)//? #endif } else{ if (!get_cvar_num("mp_weaponxpmodifier")){ playerxp[killer_id]+=xpgiven[p_level[victim_id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]],name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? #endif } else{ playerxp[killer_id]+=floatround(xpgiven[p_level[victim_id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous etes recompense de %d XP pour avoir tue %s",MOD,xpgiven[p_level[killer_id]],name)//? #else client_print(killer_id,print_chat,"[%s] You are awarded %d XP for killing %s",MOD,xpgiven[p_level[killer_id]],name)//? #endif } if (victim_id==hostagesaver && get_user_team(victim_id)!=get_user_team(killer_id)){ playerxp[killer_id]+=KILLRESCUEMANXP #if LANG_FRE client_print(killer_id,print_chat,"[%s] Vous recevez %d XP pour avoir tue le sauveur d'otages",MOD, KILLRESCUEMANXP) #else client_print(killer_id,print_chat,"[%s] You received %d XP for killing the hostage rescuer",MOD, KILLRESCUEMANXP) #endif } } displaylevel(killer_id, 1) } if (victim_id==bombdefuser && killer_id!=bombdefuser && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = DEFUSER_KILL_BONUS + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) #if LANG_FRE client_print(killer_id,print_chat, "[%s] %s a recu %d XP pour avoir tue le desamorceur",MOD,killersname,temp) #else client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb defuser",MOD,killersname,temp) #endif } } if (victim_id==bombCarrier && killer_id!=bombCarrier && get_user_team(victim_id)!=get_user_team(killer_id)){ new temp temp = KILL_BOMB_CARRIER + xpgiven[p_level[victim_id]] playerxp[killer_id]+= temp if (get_cvar_num("FT_objectives")){ new killersname[33] get_user_name(killer_id,killersname,31) #if LANG_FRE client_print(killer_id,print_chat, "[%s] %s a recu %d XP pour avoir tue le porteur de la bombe",MOD,killersname,temp) #else client_print(killer_id,print_chat, "[%s] received %s %d XP for killing the bomb carrier",MOD,killersname,temp) #endif } } new parameter[1] parameter[0]=victim_id set_task(1.0,"getuserinput",3,parameter,1) return PLUGIN_CONTINUE } public getuserinput(parm[1]){ new id = parm[0] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (p_skills[id][0] == 0){ if(get_cvar_num("mp_savexp")){ get_xp_from_file(id,1) }else select_race(id) } else if (skillsused < p_level[id]) select_skill(id,0) else displaylevel(id, 1) return PLUGIN_HANDLED } public game_commencing(){ new players[32], numplayers, id get_players(players, numplayers) for (new i=0; i650){ if (((p_skills[id][0] == 9 && race9Options[3] == 1) || p_skills[id][0] == 1) && p_skills[id][3] && playeritem2[id]!=FEATHER){ // Levitation if (get_user_gravity(id)!=p_levitation[p_skills[id][3]-1]) set_user_gravity(id,p_levitation[p_skills[id][3]-1]) } else if (playeritem2[id]==FEATHER) set_user_gravity(id,0.35) else set_user_gravity(id,1.0) } else set_user_gravity(id,1.0) if (playeritem2[id]==CAT) set_user_footsteps(id, 1) else set_user_footsteps(id, 0) if(playeritem2[id]!=CHAMELEON && skinchanged[id]) changeskin(id,1) if (task_exists(9000+id) && playeritem2[id]!=REGEN) remove_task(9000+id) if (playeritem[id]==HEALTH) set_user_health(id,get_user_health(id)+HEALTHBONUS) if(playeritem2[id]==REGEN && !task_exists(9000+id)) regenerate(parm) if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) else set_user_hitzones(0,id,255) if (playeritem2[id]==CHAMELEON && is_user_alive(id)) changeskin(id,0) } public new_round(id){ // Called at the beginning of each round and when the event ResetHUD is called if (warcraft3==false) return PLUGIN_CONTINUE if(game_commence[id]){ playeritem[id] = 0 playeritem2[id] = 0 he[id] = 0 diedlastround[id]=false game_commence[id]=false } if(get_cvar_num("FT_competitive") && !buycalled){ set_task(get_cvar_float("mp_buytime")*60.0,"set_buytime",899) buycalled = true } icon_controller(id,ICON_HIDE) deathmessageshown[id]=false issearching[id]=false // if player is searching when the round ends, this resets that value to 0 if (p_skills[id][0] == 0){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) return PLUGIN_HANDLED } to_be_revived[id]=false // Temporary orc nade fix for czero if(is_running("czero")){ he_origin[id][0]=-1.234 he_origin[id][1]=-1.234 he_origin[id][2]=-1.234 if(task_exists(id+9500)) remove_task(id+9500) } if (playerhasspawned[id]){ if (((p_skills[id][0] == 9 && race9Options[3] == 6) || p_skills[id][0] == 6) && p_skills[id][3]) // Serpent Ward serpents[id]=p_serpent[p_skills[id][3]-1] else serpents[id]=0 if(!freezetime && !ultimateused[id]) icon_controller(id,ICON_SHOW) if(stunned[id] || slowed[id]) set_user_maxspeed(id,240.0) if(playeritem2[id]!=MOLE) playeritem2[id]=0 playeritem[id]=0 changeskin(id,1) displaylevel(id,1) return PLUGIN_HANDLED } if (p_skills[id][0] == 9) displaylevel(id,0) u_delay = false if (get_cvar_num("FT_ultimatedelay")){ u_delay = true if (!task_exists(12385)) set_task(get_cvar_float("FT_ultimatedelay"), "udelay_cooldown", 12385) } if (menupend[id]){ if(get_cvar_num("mp_savexp")) get_xp_from_file(id,1) else select_race(id) menupend[id]=false } if (task_exists(21)) // Stops any ultimates from continuing when the new round starts remove_task(21) if (task_exists(26)) // Stops any ultimates from continuing when the new round starts remove_task(26) if (task_exists(id+500)) // Stop any cooldowns in effect remove_task(500+id) if (task_exists(id+645)) // Remove bomb count down remove_task(645+id) buytime=true checkmap() new parm[2] parm[0]=id if (freezecalled==0){ freezetime = 1 freezecalled = 1 } if(get_cvar_num("FT_blinkstartdisabled")){ blinkdelayed[id]=true set_task(get_cvar_float("FT_blink_delay"),"cooldown2",50 + id,parm,1) } if (get_cvar_num("FT_warn_suicide")) suicideAttempt[id] = 0 #if STEAM_POWERED set_user_maxspeed(id,1.0) #endif if (playeritem2[id]==HELM) set_user_hitzones(0,id,253) set_task(0.1, "weapon_controller", 10091, parm, 2) // Weapon Reincarnation isburning[id]=0 ultimateused[id]=false flame_count[id]=0 stunned[id]=false slowed[id]=false endround=false hostagesaver=0 hasblink[id]=false // Checks skills check_skills(id) check_fan(id) if (get_cvar_num("FT_reset_skills")){ if (resetskill[id]) { p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 p_level[id] = 0 resetskill[id]=false displaylevel(id, 1) } } new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused < p_level[id]){ select_skill(id,0) } return PLUGIN_CONTINUE } public resetskills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (get_cvar_num("FT_reset_skills")){ if(saychat==1) #if LANG_FRE client_print(id,print_center,"Vos competences seront remise à zero au prochain round") #else client_print(id,print_center,"Your skills will be reset next round") #endif else #if LANG_FRE console_print(id,"Vos competences seront remise à zero au prochain round") #else console_print(id,"Your skills will be reset next round") #endif resetskill[id]=true } else{ if(saychat==1) #if LANG_FRE client_print(id,print_center,"Cette option est desactivee du serveur") #else client_print(id,print_center,"This server has disabled that option") #endif else #if LANG_FRE console_print(id,"Cette option est desactivee du serveur") #else console_print(id,"This server has disabled that option") #endif resetskill[id]=false } return PLUGIN_HANDLED } #if !STEAM_POWERED public reset_position(parm[4]){ new origin[3] origin[0]=parm[1] origin[1]=parm[2] origin[2]=parm[3] set_user_origin(parm[0],origin) } #endif public weapon_controller( parm[2] ){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] new origin[3] = 0 new weaponid = 0, weaponname[20] = 0, ammoname[20] = 0 new bool:reincarnate new iweapons[32] = 0, wpname[32] = 0, inum = 0 get_user_weapons(id,iweapons,inum) reincarnate = false // Save weapons of people who survived: otherwise the stripper will nab them... if( diedlastround[id] == false ){ // LIVED LAST ROUND reincarnate = false } // Equipement & Eligibility Check for Re-Incarnation if ( diedlastround[id]){ // DIED LAST ROUND new Float:randomnumber = random_float(0.0,1.0) if (((p_skills[id][0] == 9 && race9Options[3] == 3) || p_skills[id][0] == 3) && p_skills[id][3] && randomnumber <= p_ankh[p_skills[id][3]-1]){ reincarnate = true //client_print(id,print_chat, "skill detected") } else if(give_items[id]){ reincarnate = true give_items[id]=false } else if (playeritem[id]==ANKH) reincarnate=true } // Equipement Re-Incarnation: Includes pistols. Also, living ppl need to be re-incarnated. if (reincarnate){ if (file_exists("sound/warcraft3/soundpack/reincarnation.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/soundpack/reincarnation.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) // Disarm and Isolate Player Before Re-Incarnation get_user_origin(id,origin) origin[2] -= 2000 set_user_origin(id,origin) for(new a=0;aMAXGLOW) iglow[id][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][1] ) // fade alpha message_end() // Restore Re-Incarnated Player to the map #if STEAM_POWERED set_user_origin(id,origin) #else new parm2[4] parm2[0]=id parm2[1]=origin[0] parm2[2]=origin[1] parm2[3]=origin[2] set_task(0.1,"reset_position",3,parm2,4) #endif }else{ hasdefuse[id]=false } item_functions(parm) return PLUGIN_HANDLED } #if !STEAM_POWERED public buy_weapons(parm[]){ new id=parm[0] new menunum=parm[1] new string[2] num_to_str(menunum,string,1) engclient_cmd(id,"buyequip") engclient_cmd(id,"menuselect",string) client_cmd(id,"slot10") return PLUGIN_CONTINUE } #endif public saveweapons(id){ armorondeath[id]=get_user_armor(id) for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[id][i]=0 } savednumber[id]=0 get_user_weapons(id,savedweapons[id],savednumber[id]) return PLUGIN_CONTINUE } public end_round(){ // Called at the end of a round if (warcraft3==false) return PLUGIN_CONTINUE endround=true buycalled=false new players[32] new numberofplayers get_players(players, numberofplayers) new y, id new parameter[1], i for (i = 0; i < numberofplayers; ++i){ parameter[0]=players[i] set_task(1.0,"getuserinput",5,parameter,1) } if(task_exists(899)) remove_task(899) for(y=0;y<33;++y) spawnPointsused[y]=false for (y = 0; y < numberofplayers; ++y){ id = players[y] if(task_exists(600+id)) // Removes walker (undead changing speed) remove_task(600+id) if (task_exists(id+90)) // Removes any current healing processes remove_task(id+90) if (task_exists(9000+id)) // Removes undead flashing process remove_task(9000+id) if (task_exists(50 + id)) // Remove any current cooldowns remove_task(50+id) if (task_exists(1000+id)){ // Remove any reset_maxspeeds occuring (could cause a person to move during freezetime remove_task(1000+id) new parm[2] parm[0]=id reset_maxspeed(parm) } if (task_exists(4500+id)){ // Resets godmode remove_task(4500+id) new parm[2] parm[0]=id reset_godmode(parm) } if(is_user_alive(id)) saveweapons(id) spawnedfromitem[id]=false playerhasspawned[id]=false if(playeritem2[id]!=CHAMELEON) changeskin(id,1) he[id]=0 carrioncount[id]=2 shadowcount[id]=2 flashg[id]=0 ismole[id]=false itemsrunning[id]=true } freezecalled = 0 pheonixexistsT=0 pheonixexistsCT=0 if (get_cvar_num("mp_savexp")) write_all() // if in race9 mode and FT_9raceRandom is set to true then pick random powers for next round // this is done last with the hope that it will not effect the current round?? if (get_cvar_num("FT_9race")){ if (get_cvar_num("FT_9raceRandom")){ new myintvallocal = 0 copy(race9skill[0],63,"") copy(race9skill[1],63,"") copy(race9skill[2],63,"") copy(race9skill[3],63,"") // loop through all four skill options (3 + ultimate) pick a new race at random and update the skill while (myintvallocal < 4){ race9Options[myintvallocal + 1] = random_num(1,8) if (race9Options[myintvallocal + 1] == 1){ copy(race9skill[myintvallocal],63,race1skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 2){ copy(race9skill[myintvallocal],63,race2skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 3){ copy(race9skill[myintvallocal],63,race3skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 4){ copy(race9skill[myintvallocal],63,race4skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 5){ copy(race9skill[myintvallocal],63,race5skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 6){ copy(race9skill[myintvallocal],63,race6skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 7){ copy(race9skill[myintvallocal],63,race7skill[myintvallocal]) } else if (race9Options[myintvallocal + 1] == 8){ copy(race9skill[myintvallocal],63,race8skill[myintvallocal]) } ++myintvallocal } } } return PLUGIN_CONTINUE } public select_skill(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if (p_skills[id][0] == 0){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) #if LANG_FRE show_hudmessage(id,"Vous devez choisir votre race avant de choisir les competences!") #else show_hudmessage(id,"You must select a race before selecting skills!") #endif } else #if LANG_FRE client_cmd(id,"echo %s","Vous devez choisir votre race avant de choisir les competences!") #else client_cmd(id,"echo %s","You must select a race before selecting skills!") #endif return PLUGIN_HANDLED } new message[256] new temp[128] new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] if (skillsused>=p_level[id]){ if (saychat==1){ set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) #if LANG_FRE show_hudmessage(id,"Vous avez deja utilise tous vos points de competences!") #else show_hudmessage(id,"You have already used up all your skill points!") #endif } else #if LANG_FRE client_cmd(id,"echo %s","Vous avez deja utilise tous vos points de competences!") #else client_cmd(id,"echo %s","You have already used up all your skill points!") #endif return PLUGIN_HANDLED } if (is_user_bot(id)){ new randomskill while (skillsused < p_level[id]){ randomskill = random_num(1,3) if (p_skills[id][4]==0 && p_level[id]>=6) p_skills[id][4]=1 else if (p_skills[id][randomskill]!=3 && p_level[id]>2*p_skills[id][randomskill]){ ++p_skills[id][randomskill] } skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] } return PLUGIN_HANDLED } #if LANG_GER format(message,255,"\yWaehle eine Faehigkeit:\w^n") #else format(message,255,"\ySelect Skill\w^n") #endif new skillcounter = 0 new skillcurrentrace[4][64] while (skillcounter < 4){ if (p_skills[id][0] == 1){ copy(skillcurrentrace[skillcounter],63,race1skill[skillcounter]) } else if (p_skills[id][0] == 2){ copy(skillcurrentrace[skillcounter],63,race2skill[skillcounter]) } else if (p_skills[id][0] == 3){ copy(skillcurrentrace[skillcounter],63,race3skill[skillcounter]) } else if (p_skills[id][0] == 4){ copy(skillcurrentrace[skillcounter],63,race4skill[skillcounter]) } else if (p_skills[id][0] == 5){ copy(skillcurrentrace[skillcounter],63,race5skill[skillcounter]) } else if (p_skills[id][0] == 6){ copy(skillcurrentrace[skillcounter],63,race6skill[skillcounter]) } else if (p_skills[id][0] == 7){ copy(skillcurrentrace[skillcounter],63,race7skill[skillcounter]) } else if (p_skills[id][0] == 8){ copy(skillcurrentrace[skillcounter],63,race8skill[skillcounter]) } ++skillcounter } skillcounter = 1 while (skillcounter< 4){ if (p_skills[id][skillcounter]!=3){ if (p_level[id]<=2*p_skills[id][skillcounter]){ format(temp,127,"\d") add(message,255,temp) } #if LANG_FRE format(temp,127,"^n%d. %s %s %d\w",skillcounter,skillcurrentrace[skillcounter-1],"Niveau",p_skills[id][skillcounter]+1) #else format(temp,127,"^n%d. %s %s %d\w",skillcounter,skillcurrentrace[skillcounter-1],"Level",p_skills[id][skillcounter]+1) #endif add(message,255,temp) } ++skillcounter } if (p_skills[id][4]==0){ if (p_level[id]<=5){ format(temp,127,"\d") add(message,255,temp) } format(temp,127,"^n4. %s: %s\w","Ultimate",skillcurrentrace[3]) add(message,255,temp) } new keys = (1<<9) if (p_skills[id][1]!=3 && p_level[id]>2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused2*p_skills[id][1] && skillsused2*p_skills[id][2] && skillsused2*p_skills[id][3] && skillsused=6 && skillsused100) set_user_health(id,100) new parm[1] parm[0]=id if (get_cvar_num("mp_savexp")){ playerxp[id] = 0 p_level[id] = 0 get_xp_from_file(id,0) } check_skills(id) if(!freezetime && !blinkdelayed[id] && !ultimateused[id]) icon_controller(id,ICON_SHOW) if (get_user_team(id)==0){ engclient_cmd(id, "chooseteam") return PLUGIN_HANDLED } else { new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3] if (skillsused < p_level[id]) select_skill(id,0) } if(((p_skills[id][0] == 9 && race9Options[2] == 2) || p_skills[id][0] == 2) && p_skills[id][2] && get_user_health(id) <= 100){ // set_health set_user_health(id,p_devotion[p_skills[id][2]-1]) } return PLUGIN_HANDLED } public jumper(parm[2]){ new id = parm[0] client_cmd(id,"+jump;wait;-jump") parm[1]++ if(!endround && is_user_alive(id)) set_task(3.0,"jumper",2000+id,parm,1) return PLUGIN_CONTINUE } public do_damage(id,enemy, damage,deathby, victim_or_enemy, weapon, bodypart, userdead){ // one who is attacked, attacker ,damage // victim = 1 // enemy = 2 if (!warcraft3) return PLUGIN_CONTINUE new userkilled = 0 new string[128] switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } client_print(id,print_console,"[DEBUG] Damage received : %d, by %s",damage,string) client_print(enemy,print_console,"[DEBUG] Damage done : %d, by %s",damage,string) if(userdead || !is_user_alive(id)){ return PLUGIN_HANDLED } if(hasblink[id] && (weapon ==10 || weapon==11 || weapon==12 || weapon==13 || weapon==15)) return PLUGIN_HANDLED if(hasgodmode[id] && !hasblink[enemy] && playeritem[enemy]!=IMMUNITY) return PLUGIN_HANDLED if (bodypart==1 && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=HEADSHOT_BONUS if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous etes recompense de %d XP pour avoir fait un headshot", MOD, HEADSHOT_BONUS)//? #else client_print(enemy,print_chat,"[%s] You are awarded %d XP for having a headshot", MOD, HEADSHOT_BONUS)//? #endif displaylevel(enemy,1) } if (get_user_health(id) - damage<=0) userkilled = 1 if (get_user_health(id) - damage<=1024 && get_user_health(id)>500) userkilled = 1 if (userkilled) set_user_health(id, -1) else set_user_health(id, get_user_health(id) - damage) if (userkilled && get_user_team(id)!=get_user_team(enemy)) set_user_money(enemy,get_user_money(enemy)+300) if (userkilled){ diedlastround[id]=true } if (userkilled && id!=enemy){ switch (deathby){ case 1: format(string,127,"%s",race8skill[2]) // Carrion Beetles case 2: format(string,127,"%s",race4skill[1]) // Thorns Aura case 3: format(string,127,"%s",race4skill[2]) // Trueshot Aura case 4: format(string,127,"%s",race8skill[1]) // Spiked Carapace case 5: format(string,127,"%s",race5skill[1]) // Banish case 6: format(string,127,"%s",race3skill[0]) // Critical Strike case 7: format(string,127,"%s",race3skill[1]) // Critical Grenade case 8: format(string,127,"%s",itemname[2]) // Duh case 9: format(string,127,"%s",race7skill[2]) // Shadow Strike case 10: format(string,127,"%s",race7skill[1]) // Blink kill of someone w/big bad voodoo case 11: format(string,127,"%s",race3skill[3]) // Chain Lightning Kill case 12: format(string,127,"%s",race1skill[3]) // Suicide Bomber Kill case 13: format(string,127,"%s",race5skill[3]) // Flame Strike Kill case 14: format(string,127,"%s",race6skill[2]) // Serpant Ward Kill case 15: format(string,127,"%s",race8skill[3]) // Locust Kill case 16: format(string,127,"%s",itemname[5]) } } if (userkilled && id!=enemy){ new idname[32], enemyname[32] get_user_name(id,idname,31) get_user_name(enemy,enemyname,31) new players[32], numberofplayers, i, y get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ y=players[i] console_print(y,"****** %s was killed by %s's %s",idname,enemyname,string) } } new name[32] get_user_name(id,name,31) if (userkilled && (victim_or_enemy == 2 || victim_or_enemy == 3)&& id !=enemy && userdead==0){ // due to thorns or spiked carapace or serpent wards or ultimates if (get_user_team(id)!=get_user_team(enemy)){ set_user_frags(enemy, get_user_frags(enemy)+1) set_user_frags(id, get_user_frags(id)+1) logKill(enemy,id, string) if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,xpgiven[p_level[id]],name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? #endif displaylevel(id, 1) } } if(!deathmessageshown[id]){ deathmessageshown[id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(0) write_string(string) message_end() } return PLUGIN_HANDLED } // && get_user_team(id)!=get_user_team(enemy) if (userkilled && victim_or_enemy == 1 && id!=enemy && userdead==0){ // due to all aggressive auras new headshot if (bodypart==1) headshot=1 else headshot=0 new weaponname[32] switch (weapon) { case 1: weaponname = "p228" case 3: weaponname = "scout" case 4: weaponname = "grenade" case 5: weaponname = "xm1014" case 7: weaponname = "mac10" case 8: weaponname = "aug" case 10: weaponname = "elite" case 11: weaponname = "fiveseven" case 12: weaponname = "ump45" case 13: weaponname = "sg550" #if STEAM_POWERED case 14: weaponname = "galil" case 15: weaponname = "famas" #endif case 16: weaponname = "usp" case 17: weaponname = "glock18" case 18: weaponname = "awp" case 19: weaponname = "mp5navy" case 20: weaponname = "m249" case 21: weaponname = "m3" case 22: weaponname = "m4a1" case 23: weaponname = "tmp" case 24: weaponname = "g3sg1" case 26: weaponname = "deagle" case 27: weaponname = "sg552" case 28: weaponname = "ak47" case 29: weaponname = "knife" case 30: weaponname = "p90" } set_user_frags(id, get_user_frags(id)+1) set_user_frags(enemy, get_user_frags(enemy)+1) logKill(enemy,id, weaponname) if (!get_cvar_num("mp_weaponxpmodifier") && get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=xpgiven[p_level[id]] if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,xpgiven[p_level[id]],name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,xpgiven[p_level[id]],name,string)//? #endif } else if(get_user_team(id)!=get_user_team(enemy)){ playerxp[enemy]+=floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]) if (get_cvar_num("FT_kill_objectives")) #if LANG_FRE client_print(enemy,print_chat,"[%s] Vous gagnez %d XP pour avoir tue %s avec %s",MOD,floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]),name,string)//? #else client_print(enemy,print_chat,"[%s] You just gained %d XP for killing %s with %s",MOD,floatround(xpgiven[p_level[id]]*weaponxpmultiplier[weapon]),name,string)//? #endif } if(!deathmessageshown[id]){ deathmessageshown[id]=true message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0) write_byte(enemy) write_byte(id) write_byte(headshot) write_string(weaponname) message_end() displaylevel(enemy, 1) } } return PLUGIN_CONTINUE } // Start Temporary Fix for czero (HE nades not working) public reset_he_origin(parm[]){ new enemy = parm[0] he_origin[enemy][0]=-1.234 he_origin[enemy][1]=-1.234 he_origin[enemy][2]=-1.234 // client_print(enemy,print_chat,"[DEBUG]After reset: x : %f, y: %f, z: %f",he_origin[enemy][0],he_origin[enemy][1],he_origin[enemy][2]) return PLUGIN_CONTINUE } // End Temporary Fix public damage_event(id){ if (warcraft3==false) return PLUGIN_CONTINUE // Added by NeKo if (get_cvar_num("FT_showblood")){ new colorblood = p_skills[id][0] new racecolor if (colorblood == 3 || colorblood == 6) // orc racecolor = 4 else if (colorblood == 4 || colorblood == 7) // elf racecolor = 2 else if (colorblood == 1 || colorblood == 8) // undead racecolor = 3 else if (colorblood == 2 || colorblood == 5) // human racecolor = 1 else racecolor = 5 bloodcreature(id,racecolor) } // End added by NeKo new weapon = 0, bodypart = 0, enemy = get_user_attacker(id,weapon,bodypart) new damage // Temporary Fix: HE nade tossed in CZ (get_user_attacker is broken in CZ for nades) This is not 100% (obviously, look at the shitty code) if(weapon==0 && enemy==0 && is_running("czero")){ new Float:porigin[3], players[32], pnum=0, y=0 new Float:distance, testenemy Entvars_Get_Vector(id,EV_VEC_origin,porigin) get_players(players, pnum) for(y=0;y0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( shadow ) // short (sprite index) write_byte( 50 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) shadowcount[enemy]-- if (file_exists("sound/warcraft3/shadowstrikebirth1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/shadowstrikebirth1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/shadowstrikemissile1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/shadowstrikemissile1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,9,1, weapon, bodypart,0) message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][2] ) // fade alpha message_end() } } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 8) || p_skills[enemy][0] == 8)){ // Carrion Beetle if(p_skills[enemy][3]){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_carrion[p_skills[enemy][3]-1]&& carrioncount[enemy]>0 && is_user_alive(id)){ new idorigin[3] new enemyorigin[3] get_user_origin(id,idorigin) get_user_origin(enemy,enemyorigin) message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( TE_SPRITETRAIL ) write_coord(enemyorigin[0]) write_coord(enemyorigin[1]) write_coord(enemyorigin[2]) write_coord(idorigin[0]) write_coord(idorigin[1]) write_coord(idorigin[2]) write_short( grunt ) // short (sprite index) write_byte( 15 ) // byte (count) write_byte( 15 ) // byte (life in 0.1's) write_byte( 1 ) // byte (scale in 0.1's) write_byte( 2 ) // byte (velocity along vector in 10's) write_byte( 6 ) // byte (randomness of velocity in 10's) message_end() set_hudmessage(200, 100, 0, 0.2, 0.2, 0, 1.0, 5.0, 0.1, 0.2, 2) carrioncount[enemy]-- if (file_exists("sound/warcraft3/carrionswarmlaunch1.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/carrionswarmlaunch1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (file_exists("sound/warcraft3/carrionswarmdamage1.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/carrionswarmdamage1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) damage = 10 do_damage(id, enemy,damage,1,1, weapon, bodypart,0) } } } if (((p_skills[id][0] == 9 && (race9Options[1] == 4 || race9Options[2] == 4)) || p_skills[id][0] == 4)){ // Elf if (((p_skills[id][0] == 9 && race9Options[1] == 4) || p_skills[id][0] == 1) && p_skills[id][1]) { // Evasion new healthadjustment = 0 new bool:p_evadecurrentshot = p_evadenextshot[id] new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_evasion[p_skills[id][1]-1]){ p_evadenextshot[id]=true if (get_user_health(id)<=100){ healthadjustment = 1024 } } else{ p_evadenextshot[id]=false if (get_user_health(id)>100){ healthadjustment = -1024 } } if (p_evadecurrentshot){ damage = read_data(2) set_user_health(id, get_user_health(id) + damage + healthadjustment) if (iglow[id][2] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",7,parm,2) } iglow[id][2] += damage iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][3] = 0 if (iglow[id][2]>MAXGLOW) iglow[id][2]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 0 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][2] ) // fade alpha message_end() } else set_user_health(id, get_user_health(id) + healthadjustment) } if (((p_skills[id][0] == 9 && race9Options[2] == 4) || p_skills[id][0] == 4) && p_skills[id][2]) { // Thorns Aura damage = read_data(2) damage = floatround(float(damage) * p_thorns[p_skills[id][2]-1]) do_damage(enemy, id,damage,2,2, weapon, bodypart,0) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 4) || p_skills[enemy][0] == 4) && p_skills[enemy][3]) { // Trueshot damage = read_data(2) damage = floatround(float(damage) * p_trueshot[p_skills[enemy][3]-1]) do_damage(id, enemy,damage,3,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } if (((p_skills[id][0] == 9 && race9Options[2] == 8) || p_skills[id][0] == 8)){ if (p_skills[id][2]) { // Spiked Carapace damage = read_data(2) damage = floatround(float(damage) * p_spiked[p_skills[id][2]-1]) do_damage(enemy, id,damage,4,2, weapon, bodypart,0) if(get_user_armor(id)<101) set_user_armor(id,get_user_armor(id)+damage) if (iglow[enemy][0] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",8,parm,2) } iglow[enemy][0] += 3*damage iglow[enemy][1] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][0]>MAXGLOW) iglow[enemy][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][0] ) // fade alpha message_end() } } if (p_skills[enemy][1] && ((p_skills[enemy][0] == 9 && race9Options[1] == 8) || p_skills[enemy][0] == 8)){ new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_impale[p_skills[enemy][1]-1]){ if (file_exists("sound/warcraft3/impalehit.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/impalehit.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin(MSG_ONE,gmsgShake,{0,0,0},id) write_short(255<< 14 ) //ammount write_short(10 << 14) //lasts this long write_short(255<< 14) //frequency message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[2] == 6) || p_skills[enemy][0] == 6)){ // Hex if (p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_hex[p_skills[enemy][2]-1] && !skinchanged[id]){ changeskin(id,2) new parm[2] parm[0]=id parm[1]=0 jumper(parm) #if LANG_GER client_print(id,print_chat,"[%s] Du bist nun ein Goomba und springst nur herum.",MOD) #endif #if LANG_FRE client_print(id,print_chat,"[%s] Vous vous etes transformer en goomba, en mourant",MOD) #endif #if LANG_ENG client_print(id,print_chat,"[%s] You are now a goomba, just jumping along",MOD) #endif } } } if (((p_skills[enemy][0] == 9 && (race9Options[2] == 5 || race9Options[3] == 5)) || p_skills[enemy][0] == 5)){ // Banish if (((p_skills[enemy][0] == 9 && race9Options[2] == 5) || p_skills[enemy][0] == 5) && p_skills[enemy][2]) { new Float:randomnumber = random_float(0.0,1.0) new num = p_skills[enemy][2]-1 // server_print("[%s] Banish Skill: %d, randomnumber: %f, Banish chance: %f",MOD, num, randomnumber,p_banish[num]) if (randomnumber <= p_banish[num]){ new parm[2] parm[0]=id if(randomnumber>9){ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,9,5,2, weapon, bodypart,0) } else{ user_slap(id,0) user_slap(id,0) user_slap(id,0) do_damage(id, id,7,5,2, weapon, bodypart,0) } if (file_exists("sound/warcraft3/banishcaster.wav")==1) emit_sound(enemy,CHAN_STATIC, "warcraft3/banishcaster.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 5) || p_skills[enemy][0] == 5) && p_skills[enemy][3]) { // Siphon Mana new money = get_user_money(id) money = floatround(p_mana[p_skills[enemy][3]-1] * money) set_user_money(enemy,get_user_money(enemy)+money,1) set_user_money(id,get_user_money(id)-money,1) if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 120 ) // fade red write_byte( 120 ) // fade green write_byte( 120 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[1] == 1) || p_skills[enemy][0] == 1)){ // Vampiric Aura if (p_skills[enemy][1]) { damage = read_data(2) damage = floatround(float(damage) * p_vampiric[p_skills[enemy][1]-1]) set_user_health(enemy, get_user_health(enemy) + damage) if (get_user_health(enemy) > p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ){ set_user_health(enemy, p_vampirichealth[p_skills[enemy][1]-1]+ (playeritem[enemy]==HEALTH ? HEALTHBONUS : 0) ) } if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[3] == 2) || p_skills[enemy][0] == 2)){ // Bash (DOESN'T WORK ON BOTS) if (p_skills[enemy][3]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_bash[p_skills[enemy][3]-1] && get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot bash if already bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) stunned[id]=true new parm[2] parm[0]=id parm[1]=normalspeed set_task(1.0,"reset_maxspeed",1000+id,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } } if (((p_skills[enemy][0] == 9 && (race9Options[1] == 3 || race9Options[2] == 3)) || p_skills[enemy][0] == 3)){ // Critical Strike if (((p_skills[enemy][0] == 9 && race9Options[1] == 3) || p_skills[enemy][0] == 3) && p_skills[enemy][1]) { new Float:randomnumber = random_float(0.0,1.0) if (randomnumber <= p_critical[p_skills[enemy][1]-1]){ damage = read_data(2) damage = floatround(float(damage) * p_skills[enemy][1]) // Will be either 1, 2 or 3 times damage induced depending on skill level do_damage(id, enemy,damage,6,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",12,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } if (((p_skills[enemy][0] == 9 && race9Options[2] == 3) || p_skills[enemy][0] == 3) && p_skills[enemy][2]){ // Critical Grenade new bool:allow=true if(playeritem2[enemy]==INFERNO){ if(get_cvar_num("FT_glove_orc_damage")) allow=true else allow=false } else allow=true if(no_he) allow=false if (weapon == 4 && allow){ damage = read_data(2) damage = floatround(float(damage) * p_grenade[p_skills[enemy][2]-1]) do_damage(id, enemy,damage,7,1, weapon, bodypart,0) new name[32] get_user_name(id,name,31) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",13,parm,2) } iglow[id][0] += damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } } if (playeritem[enemy] == CLAWS){ // Claws of Attack damage = CLAWSOFATTACK do_damage(id, enemy,damage,8,1, weapon, bodypart,0) if (iglow[id][0] < 1){ new parm[2] parm[0] = id set_task(0.01,"glow_change",14,parm,2) } iglow[id][0] += 2*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } else if (playeritem[enemy] == MASK){ // Mask of Death damage = read_data(2) damage = floatround(float(damage) * MASKPERCENT) set_user_health(enemy, get_user_health(enemy) + damage) if (get_user_health(enemy) > (((p_skills[enemy][0] == 9 && race9Options[2] == 2) || p_skills[enemy][0] == 2) ? p_devotion[p_skills[enemy][2]-1] : 100) ){ set_user_health(enemy, (((p_skills[enemy][0] == 9 && race9Options[2] == 2) || p_skills[enemy][0] == 2) ? p_devotion[p_skills[enemy][2]-1] : 100) ) } if (iglow[enemy][1] < 1){ new parm[2] parm[0] = enemy set_task(0.01,"glow_change",9,parm,2) } iglow[enemy][1] += damage iglow[enemy][0] = 0 iglow[enemy][2] = 0 iglow[enemy][3] = 0 if (iglow[enemy][1]>MAXGLOW) iglow[enemy][1]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},enemy) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 0 ) // fade red write_byte( 255 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[enemy][1] ) // fade alpha message_end() } else if (playeritem[enemy] == FROST){ // Frost (DOESN'T WORK ON BOTS) if (get_user_maxspeed(id)>10 && !slowed[id]){ // Cannot frost if bashed or frosted new normalspeed = floatround(get_user_maxspeed(id)) set_user_maxspeed(id,FROSTSPEED) // Replace "id" with "enemy" to test bash on self slowed[id]=true new parm[2] parm[0]=id // Replace "id" with "enemy" to test bash on self parm[1]=normalspeed set_task(1.0,"reset_maxspeed",1000+id,parm,2) if (iglow[id][3] < 1){ parm[0] = id parm[1] = 0 set_task(0.01,"glow_change",11,parm,2) } iglow[id][3] += 100 iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 if (iglow[id][3]>MAXGLOW) iglow[id][3]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() } } return PLUGIN_CONTINUE } public glow_change(parm[]){ new id = parm[0] if (((p_skills[id][0] == 9 && race9Options[1] == 2) || p_skills[id][0] == 2) && p_skills[id][1]){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } else if (playeritem[id]==CLOAK){ // Don't glow if player is invisible iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 } else if (iglow[id][0] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][0],0,0, kRenderNormal, 16) iglow[id][0] -= 5 set_task(0.2,"glow_change",15,parm,2) } else if (iglow[id][1] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,iglow[id][1],0, kRenderNormal, 16) iglow[id][1] -= 5 set_task(0.2,"glow_change",16,parm,2) } else if (iglow[id][2] > 5){ set_user_rendering(id,kRenderFxGlowShell,0,0,iglow[id][2], kRenderNormal, 16) iglow[id][2] -= 5 set_task(0.2,"glow_change",17,parm,2) } else if (iglow[id][3] > 5){ set_user_rendering(id,kRenderFxGlowShell,iglow[id][3],iglow[id][3],iglow[id][3], kRenderNormal, 16) iglow[id][3] -= 5 set_task(0.2,"glow_change",18,parm,2) } else{ iglow[id][0] = 0 iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 set_user_rendering(id) } return PLUGIN_CONTINUE } public reset_maxspeed(parm[]){ new enemy = parm[0] new normalspeed = parm[1] stunned[enemy]=false slowed[enemy]=false set_user_maxspeed(enemy, float(normalspeed)) return PLUGIN_CONTINUE } #if STEAM_POWERED public zoomed2(id){ zoomed[id]=1 } public unzoomed(id){ zoomed[id]=0 } #endif public nadetimer(parm[2]){ new id = parm[0] set_hudmessage(0, 100, 0, 0.05, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2) if(playeritem2[id]!=INFERNO){ show_hudmessage(id,"") return PLUGIN_HANDLED } if(nadetime[parm[0]]!=0) #if LANG_FRE show_hudmessage(id,"%d seconde(s) avant votre prochaine grenade", nadetime[parm[0]]) #else show_hudmessage(id,"%d second(s) until your next grenade", nadetime[parm[0]]) #endif nadetime[parm[0]] -= 1 if (!is_user_alive(id)) #if LANG_FRE show_hudmessage(id,"Ne meurs pas imbecile, et tu auras des grenades!") #else show_hudmessage(id,"Don't die next time and I'll give you another nade ya silly goose!") #endif if (nadetime[parm[0]]!=-1 && is_user_alive(parm[0])) set_task(1.0,"nadetimer",9400+id,parm,2) if (nadetime[parm[0]]==-1){ giveheifnothas(parm) nadetime[id] = get_cvar_num("FT_glove_timer") return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public change_weapon(id) { if (warcraft3==false) return PLUGIN_CONTINUE // Gives person a grenade if they weren't just given one if (playeritem2[id]==INFERNO) { new wpnList[32] = 0 new number = 0 new foundNade = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundNade;i++) { if (wpnList[i] == CSW_HEGRENADE) foundNade = true } new parm[2] parm[0]=id if(!justgivennade[id] && !foundNade) { justgivennade[id]=true nadetimer(parm) } } // End nade giving segment new clipamount = 0 new ammoamount = 0 new weaponnum = 0 weaponnum = (get_user_weapon(id,clipamount,ammoamount)) if (((p_skills[id][0] == 9 && race9Options[1] == 2) || p_skills[id][0] == 2) && p_skills[id][1]){ // Invisibility if (weaponnum==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,p_invisibility[p_skills[id][1]-1]) knifeselected[id]=false } } else if (playeritem[id]==CLOAK){ if (weaponnum==29){ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY/2) knifeselected[id]=true } else{ set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,CLOAKINVISIBILITY) knifeselected[id]=false } } else set_user_rendering(id) #if STEAM_POWERED if (!freezetime && !slowed[id] && !stunned[id]) { if (weaponnum==3){ //scout if (zoomed[id]==1) set_user_maxspeed(id,220.0) else set_user_maxspeed(id,260.0) //220 zoomed } else if (weaponnum==4){ //hegrenad set_user_maxspeed(id,260.0) } else if (weaponnum==5){ //xm1014 set_user_maxspeed(id,230.0) } else if (weaponnum==7){ //mac10 set_user_maxspeed(id,250.0) } else if (weaponnum==8){ //aug - bollup set_user_maxspeed(id,240.0) } else if (weaponnum==9){ //smokegrenade set_user_maxspeed(id,250.0) } else if (weaponnum==12){ //ump45 set_user_maxspeed(id,250.0) } else if (weaponnum==13){ //sg550 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==18){ //awp if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==19){ //mp5 set_user_maxspeed(id,250.0) } else if (weaponnum==20){ //m249 set_user_maxspeed(id,220.0) } else if (weaponnum==21){ //auto-shotty (m3) set_user_maxspeed(id,240.0) } else if (weaponnum==14){ //galil set_user_maxspeed(id,240.0) } else if (weaponnum==15){ //famas set_user_maxspeed(id,240.0) } else if (weaponnum==22){ //M4A1 set_user_maxspeed(id,230.0) } else if (weaponnum==23){ //TMP set_user_maxspeed(id,250.0) } else if (weaponnum==24){ //G3SG1 if (zoomed[id]==1) set_user_maxspeed(id,150.0) else set_user_maxspeed(id,210.0) //150 zoomed } else if (weaponnum==25){ //flashbang set_user_maxspeed(id,250.0) } else if (weaponnum==27){ //sg552 set_user_maxspeed(id,235.0) } else if (weaponnum==28){ //AK47 set_user_maxspeed(id,221.0) } else if (weaponnum==30){ //P90 set_user_maxspeed(id,245.0) } else if (weaponnum==1){ //p228 set_user_maxspeed(id,250.0) } else if (weaponnum==10 ){ //elite set_user_maxspeed(id,250.0) } else if (weaponnum==11){ //fiveseven set_user_maxspeed(id,250.0) } else if (weaponnum==26){ //deagle set_user_maxspeed(id,250.0) } else if (weaponnum==16){ //usp set_user_maxspeed(id,250.0) } else if (weaponnum==17){ //glock set_user_maxspeed(id,250.0) } else if (weaponnum==29){ //knife set_user_maxspeed(id,250.0) } else if (weaponnum==6){ //BOMB set_user_maxspeed(id,250.0) } } #endif new parm[1] parm[0]=id unholyspeed(parm) return PLUGIN_CONTINUE } public freezetimedone() { if (warcraft3==false) return PLUGIN_CONTINUE freezetime = 0 new players[32],numberofplayers, id, i, parm[1] get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ id=players[i] parm[0]=id #if STEAM_POWERED set_user_maxspeed(id,240.0) #endif set_task(0.1,"unholyspeed",19,parm,1) set_task(0.1,"unfreezespeed",21) if(get_cvar_num("FT_blinkstartdisabled")){ if(!(((p_skills[id][0] == 9 && race9Options[4] == 2) || p_skills[id][0] == 2) && p_skills[id][4])){ icon_controller(id,ICON_SHOW) ultimateused[id]=false } } else{ icon_controller(id,ICON_SHOW) ultimateused[id]=false } displaylevel(id,3) } return PLUGIN_CONTINUE } public set_buytime() buytime=false // New function called by freezetimedone - [AoL]Demandred public unfreezespeed() { if (warcraft3==false) return PLUGIN_CONTINUE new players[32] new numberofplayers get_players(players, numberofplayers) new i new id for (i = 0; i < numberofplayers; ++i){ id=players[i] change_weapon(id) } return PLUGIN_CONTINUE } // End new function - [AoL]Demandred public unholyspeed(parm[1]){ if (warcraft3==false) return PLUGIN_CONTINUE new id = parm[0] if (stunned[id]){ set_user_maxspeed(id,1.0) return PLUGIN_HANDLED } else if (slowed[id]){ set_user_maxspeed(id,FROSTSPEED) } #if STEAM_POWERED else if (get_user_maxspeed(id)>10 && ((p_skills[id][0] == 9 && race9Options[2] == 1) || p_skills[id][0] == 1) && p_skills[id][2] && !freezetime){ // Unholy Aura if (get_user_maxspeed(id)>10 && get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]) set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } #else else if (get_user_maxspeed(id)>10 && ((p_skills[id][0] == 9 && race9Options[2] == 1) || p_skills[id][0] == 1) && p_skills[id][2] && !freezetime){ // Unholy Aura if (get_user_maxspeed(id)!=p_unholy[p_skills[id][2]-1]) set_user_maxspeed(id,(p_unholy[p_skills[id][2]-1])) } #endif else if (get_user_maxspeed(id)>10 && playeritem[id]==BOOTS && !freezetime){ // Boots of Speed if (get_user_maxspeed(id)!=BOOTSPEED) set_user_maxspeed(id,BOOTSPEED) } return PLUGIN_CONTINUE } public player_skills(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new name[32], message[2048] #if STEAM_POWERED new temp[1024] #else new temp[256] #endif new skill1[64], skill2[64], skill3[64], skill4[64] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid #if STEAM_POWERED add(message,2047,"") #endif for (i = 0; i < numberofplayers; ++i){ skill1="" skill2="" skill3="" skill4="" playerid=players[i] get_user_name(playerid,name,31) if (p_skills[playerid][0]==1){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race1skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race1skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race1skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race1skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==2){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race2skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race2skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race2skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race2skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[2],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==3){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race3skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race3skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race3skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race3skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[3],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[3],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==4){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race4skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race4skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race4skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race4skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[4],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==5){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race5skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race5skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race5skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race5skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[5],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==6){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race6skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race6skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race6skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race6skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[6],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==7){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race7skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race7skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race7skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race7skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[7],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==8){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race8skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race8skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race8skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race8skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[8],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==9){ if(p_skills[playerid][1]) format(skill1,63,", %s %d",race9skill[0],p_skills[playerid][1]) if(p_skills[playerid][2]) format(skill2,63,", %s %d",race9skill[1],p_skills[playerid][2]) if(p_skills[playerid][3]) format(skill3,63,", %s %d",race9skill[2],p_skills[playerid][3]) if(p_skills[playerid][4]) format(skill4,63,", %s",race9skill[3]) #if STEAM_POWERED format(temp,1023,"%s - %s %d%s%s%s%s
",name,racename[9],p_level[playerid],skill1,skill2,skill3,skill4) // format(temp,1023,"%s - %s %d%s%s%s%s
",name,name,racename[1],p_level[playerid],skill1,skill2,skill3,skill4) #else format(temp,255,"%s - %s %d%s%s%s%s^n",name,racename[9],p_level[playerid],skill1,skill2,skill3,skill4) #endif } else if (p_skills[playerid][0]==0){ #if STEAM_POWERED format(temp,1023,"%s - race not yet selected
",name) #else format(temp,255,"%s - race not yet selected^n",name) #endif } add(message,2047,temp) } if (saychat==1){ #if LANG_GER show_motd(id,message,"Warcraft 3 Frozen Throne Spieler Faehigkeiten") #endif #if LANG_FRE show_motd(id,message,"Warcraft3 Frozen Throne Competentes des Joueurs") #endif #if LANG_ENG show_motd(id,message,"Warcraft 3 Frozen Throne Player Skills") #endif return PLUGIN_CONTINUE } else{ console_print(id,message) } return PLUGIN_HANDLED } public items_info(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new temp[1024], pos = 0 #if STEAM_POWERED new theforward[] = "
  • " new backward[] = "
  • " new lastone[] = "" pos += format(temp[pos], 1024-pos, "
      ") #else new theforward[] = "" new backward[] = "^n" new lastone[] = "" #endif #if LANG_GER if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sAnkh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBoots of Speed: Du rennst schneller als alle anderen%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sClaws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sCloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst %s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sNecklace of Immunity: Du bist immun gegen Ultimates",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrb of Frost: Macht den Gegner langsamer wenn du ihn triffst%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sPeriapt of Health: Du bekommst extra Gesundheit beim Start der Runde%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome of Experience: Du kaufst Erfahrungspunkte ein.%s%s",theforward,backward,lastone) show_motd(id,temp,"Einkaufsmenu Gegenstandsinfo") } else{ console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") console_print(id,"Ankh of Reincarnation: Wenn du stirbst, erhälst du in der nächsten Runde deine Ausrüstung zurück") console_print(id,"Boots of Speed: Du rennst schneller als alle anderen") console_print(id,"Claws of Attack +%s: Bei jedem Treffer werden dem Gegner zusätzliche %sHP abgezogen",CLAWSOFATTACK,CLAWSOFATTACK) console_print(id,"Cloak of Shadows: Macht dich teilweise unsichtbar, mit dem Messer in der Hand fast unsichtbar") console_print(id,"Mask of Death: Du bekommst HP zurück wenn du dem Gegner Schaden zufügst ") console_print(id,"Necklace of Immunity: Du bist immun gegen Ultimates") console_print(id,"Orb of Frost: Macht den Gegner langsamer wenn du ihn triffst") console_print(id,"Periapt of Health: Du bekommst extra Gesundheit beim Start der Runde") console_print(id,"Tome of Experience: Du kaufst Erfahrungspunkte ein.") console_print(id,"---- Einkaufsmenu Gegenstandsinfo ----") } #endif #if LANG_FRE if(saychat==1){ pos += format(temp[pos], 1024-pos, "%s%s: Vous permet de recuperer votre equipement le round suivant si vous mourez%s",theforward,itemname[0],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous permet de courir plus vite%s",theforward,itemname[1],backward) pos += format(temp[pos], 1024-pos, "%s%s +%d: %dHP degat supplementaire seront infliges a chaque attaque que vous faites%s",theforward,itemname[2],CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous rends partiellement invisible, le couteau permet d'etre quasiment invisible%s",theforward,itemname[3],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous permet d'absorber de la vie a chaque attaque que vous faites%s",theforward,itemname[4],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous immunise contre les ULTIMATES et %s%s",theforward,itemname[5],race3skill[1],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous permet de ralentir votre ennemi quand vous le touchez%s",theforward,itemname[6],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous commencez avec %dHP en plus au debut du round%s",theforward,itemname[7],HEALTHBONUS,backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous permet d'acheter de l'XP%s%s",theforward,itemname[8],backward,lastone) show_motd(id,temp,"Shopmenu Information Objet") } else{ console_print(id,"---- Shopmenu Information Objet ----") console_print(id,"%s: Vous permet de recuperer votre equipement le round suivant si vous mourez",itemname[0]) console_print(id,"%s: Vous permet de courir plus vite",itemname[1]) console_print(id,"%s +%d: %dHP degat supplementaire seront infliges a chaque attaque que vous faites",theforward,itemname[2],CLAWSOFATTACK,CLAWSOFATTACK,backward) console_print(id,"%s: Vous rends partiellement invisible, le couteau permet d'etre quasiment invisible",itemname[3]) console_print(id,"%s: Vous permet d'absorber de la vie a chaque attaque que vous faites",itemname[4]) console_print(id,"%s: Vous immunise contre les ULTIMATES et %s",itemname[5],race3skill[1]) console_print(id,"%s: Vous permet de ralentir votre ennemi quand vous le touchez",theforward,itemname[6]) console_print(id,"%s: Vous commencez avec %dHP en plus au debut du round",itemname[7],HEALTHBONUS) console_print(id,"%s: Vous permet d'acheter de l'XP",itemname[8]) console_print(id,"---- Shopmenu Information Objet ----") } #endif #if LANG_ENG if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sAnkh of Reincarnation: If you die you will retrieve your equipment the following round%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sBoots of Speed: Allows you to run faster%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sClaws of Attack +%s: An additional %s hp will be removed from the enemy on every hit%s",theforward,CLAWSOFATTACK,CLAWSOFATTACK,backward) pos += format(temp[pos], 1024-pos, "%sCloak of Shadows: Makes you partially invisible, invisibility is increased when holding the knife%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMask of Death: You will receive health for every hit on the enemy%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sNecklace of Immunity: You will be immune enemy ultimates",theforward,backward) pos += format(temp[pos], 1024-pos, "%sOrb of Frost: Slows your enemy down when you hit him%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sPeriapt of Health: Receive extra health%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sTome of Experience: Automatically gain experience, the item is used on purchase%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu Item Information") } else{ console_print(id,"---- Shopmenu Item Information ----") console_print(id,"Ankh of Reincarnation: If you die you will retrieve your equipment the following round") console_print(id,"Boots of Speed: Allows you to run faster") console_print(id,"Claws of Attack +%s: An additional %s hp will be removed from the enemy on every hit",CLAWSOFATTACK,CLAWSOFATTACK) console_print(id,"Cloak of Shadows: Makes you partially invisible, invisibility is increased when holding the knife") console_print(id,"Mask of Death: You will receive health for every hit on the enemy") console_print(id,"Necklace of Immunity: You will be immune enemy ultimates") console_print(id,"Orb of Frost: Slows your enemy down when you hit him") console_print(id,"Periapt of Health: Receive extra health") console_print(id,"Tome of Experience: Automatically gain experience, the item is used on purchase") console_print(id,"---- Shopmenu Item Information ----") } #endif return PLUGIN_CONTINUE } public items_info2(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE new temp[1024], pos = 0 #if STEAM_POWERED new theforward[] = "
    • " new backward[] = "
    • " new lastone[] = "" pos += format(temp[pos], 1024-pos, "
        ") #else new theforward[] = "" new backward[] = "^n" new lastone[] = "" #endif #if LANG_GER if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sScroll of Respawning: Wenn du stirbst wirst du wieder wiederbelebt%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole Protectant: Schutz vor Schüssen von Mole's%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulet of the Cat: Deine Schritte und Leitergeräusche sind nicht mehr zu hören%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sSock of the Feather: Geringere Anziehungskraft%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sHelm of Excellence: Macht dich immun gegen Kopfschuesse%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sFlaming Gloves of Warmth: Gibt dir alle %s Sekunden eine HE%s",theforward,get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%sRing of Regeneration +1: Gibt dir 1 HP alle 2 Sekunden. (Maximal 5 - schreib: rings um sie zu erhalten)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sChameleon: Du siehst aus wie der Gegner!!%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole: Du wirst bei Rundenbginn mit gegnerischem Skin zum anderen Startplatz teleportiert%s%s",theforward,backward,lastone) show_motd(id,temp,"Einkaufsmenu 2 Gegenstandsinfo") } else{ console_print(id,"---- Einkaufsmenu 2 Gegenstandsinfo ----") console_print(id,"Scroll of Respawning: Wenn du stirbst wirst du wieder wiederbelebt") console_print(id,"Mole Protectant: Schutz vor Schüssen von Mole's") console_print(id,"Amulet of the Cat: Deine Schritte und Leitergeräusche sind nicht mehr zu hören") console_print(id,"Sock of the Feather: Geringere Anziehungskraft") console_print(id,"Helm of Excellence: Macht dich immun gegen Kopfschuesse") console_print(id,"Flaming Gloves of Warmth: Gibt dir alle %s Sekunden eine HE",get_cvar_num("FT_glove_timer")) console_print(id,"Ring of Regeneration +1: Gibt dir 1 HP alle 2 Sekunden. (Maximal 5 - schreib: rings um sie zu erhalten)") console_print(id,"Chameleon: Du siehst aus wie der Gegner!!") console_print(id,"Mole: Du wirst bei Rundenbginn mit gegnerischem Skin zum anderen Startplatz teleportiert") console_print(id,"---- Einkaufsmenu 2 Gegenstandsinfo ----") } #endif #if LANG_FRE if(saychat==1){ pos += format(temp[pos], 1024-pos, "%s%s: Vous fait revivre une fois%s",theforward,itemname2[0],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous serez proteger des ^"Mole^" les 6 premieres secondes du round%s",theforward,itemname2[1],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous serez aussi silencieux qu'un chat%s",theforward,itemname2[2],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous pourrez sauter aussi haut qu'avec le pouvoir Levitation niveau 3%s",theforward,itemname2[3],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous proteges la tete contre les Headshots%s",theforward,itemname2[4],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous donne une grenade toutes les %s secondes%s",theforward,itemname2[5],get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous donne 1Hp toutes les 2s par anneau, vous pouvez en acheter 5 maximun (taper rings)%s",theforward,itemname2[6],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous prenez l'apparence d'un ennemi !!%s",theforward,itemname2[7],backward) pos += format(temp[pos], 1024-pos, "%s%s: Vous teleporte dans le camp ennemi, et vous prenez l'apparence de l'un d'entre eux%s%s",theforward,itemname2[8],backward,lastone) show_motd(id,temp,"Shopmenu2 Information Objet") } else{ console_print(id,"---- Shopmenu2 Information Objet ----") console_print(id,"%s: Vous fait revivre une fois",itemname2[0]) console_print(id,"%s: Vous serez proteger des ^"Mole^" les 6 premieres secondes du round",itemname2[1]) console_print(id,"%s: Vous serez aussi silencieux qu'un chat",itemname2[2]) console_print(id,"%s: Vous pourrez sauter aussi haut qu'avec le pouvoir Levitation niveau 3",itemname2[3]) console_print(id,"%s: Vous proteges la tete contre les Headshots",itemname2[4]) console_print(id,"%s: Vous donne une grenade toutes les %s secondes",itemname2[5],get_cvar_num("FT_glove_timer")) console_print(id,"%s: Vous donne 1Hp toutes les 2s par anneau, vous pouvez en acheter 5 maximun (taper rings)",itemname2[6]) console_print(id,"%s: Vous prenez l'apparence d'un ennemi !!",itemname2[7]) console_print(id,"%s: Vous teleporte dans le camp ennemi, et vous prenez l'apparence de l'un d'entre eux",itemname2[8]) console_print(id,"---- Shopmenu2 Information Objet ----") } #endif #if LANG_ENG if(saychat==1){ pos += format(temp[pos], 1024-pos, "%sScroll of Respawning: You will respawn after death%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole Protectant: Protects you from moles (unless they hit you in the head)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sAmulet of the Cat: You cannot be heard when running/going up ladders%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sSock of the Feather: Low gravity, more than Undead's level 3 levitation%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sHelm of Excellence: Immune to headshots%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sFlaming Gloves of Warmth: Given an HE grenade every %s seconds%s",theforward,get_cvar_num("FT_glove_timer"),backward) pos += format(temp[pos], 1024-pos, "%sRing of Regeneration +1: Gives 1 health every 2 seconds, you can have 5 max (type rings to receive 5)%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sChameleon: You look like the enemy!!%s",theforward,backward) pos += format(temp[pos], 1024-pos, "%sMole: Teleported to enemy spawn at the start of the round, can only be used once%s%s",theforward,backward,lastone) show_motd(id,temp,"Shopmenu2 Item Information") } else{ console_print(id,"---- Shopmenu2 Item Information ----") console_print(id,"Scroll of Respawning: You will respawn after death") console_print(id,"Mole Protectant: Protects you from moles (unless they hit you in the head)") console_print(id,"Amulet of the Cat: You cannot be heard when running/going up ladders") console_print(id,"Sock of the Feather: Low gravity, more than Undead's level 3 levitation") console_print(id,"Helm of Excellence: Immune to headshots") console_print(id,"Flaming Gloves of Warmth: Given an HE grenade every %s seconds",get_cvar_num("FT_glove_timer")) console_print(id,"Ring of Regeneration +1: Gives 1 health every 2 seconds, you can have 5 max (type rings to receive 5)") console_print(id,"Chameleon: You look like the enemy!!") console_print(id,"Mole: Teleported to enemy spawn at the start of the round, can only be used once") console_print(id,"---- Shopmenu2 Item Information ----") } #endif return PLUGIN_CONTINUE } public war3_info(id, saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new temp[2048] new pos = 0 #if STEAM_POWERED new thereturn[] = "
        " new thep[] = "

        " pos += format(temp[pos], 2048-pos, "") pos += format(temp[pos], 2048-pos, "This mod was developed by 4HM | Pimp Daddy, visit www.4hm.net (forums) for more details
        ") pos += format(temp[pos], 2048-pos, "Click here for the latest updates to Warcraft 3 Frozen Throne
        ") #if LANG_GER pos += format(temp[pos], 2048-pos, "Klicke hier fuer mehr Informationen ... (Englische Version)") #endif #if LANG_FRE pos += format(temp[pos], 2048-pos, "Cliquer ici pour avoir plus d'information sur les races, etc..
        ") #endif #if LANG_ENG pos += format(temp[pos], 2048-pos, "Click here for more information regarding the new races, etc..
        ") #endif #else new thereturn[] = "^n" new thep[] = "^n^n" #endif #if LANG_GER if(saychat==1){ pos += format(temp[pos], 2048-pos, "Das binden von Tasten:%s",thep) pos += format(temp[pos], 2048-pos, "1) Die ` Taste drücken um in die Konsole zu gelangen (links von der 1)%s",thereturn) pos += format(temp[pos], 2048-pos, "2) Schreibe bind alt ultimate (so aktiviert die ALT Taste das Ultimate)%s",thereturn) pos += format(temp[pos], 2048-pos, "3) Schreibe bind - shopmenu (so aktiviert die - Taste das shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "4) Schreibe bind = shopmenu2 (so aktiviert die = Taste das shopmenu2)%s",thereturn) pos += format(temp[pos], 2048-pos, "5) Schreibe bind p ability (so aktiviert die p Taste die Fertigkeit einiger Rassen)%s",thep) pos += format(temp[pos], 2048-pos, "Es gibt noch einige Befehle mehr um das WC3-Plugin vollständig zu nutzen.%s",thep) pos += format(temp[pos], 2048-pos, "Spieler Befehle (einfach in den Chat schreiben mit oder ohne / ) :%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Fähigkeiten deiner Rasse auswählen %s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Rasse wechseln%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Rassen und Fähigkeiten Anzeige aller Spieler%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Erklärungen der Fähigkeiten deiner Rasse%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Erklärung der Gegenstände im shopmenu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Erklärung der Gegenstände im shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Zeigt deine Rasse, Fähigkeiten ,Level und Erfahrungspunkte an%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3vote - Das Plugin an- bzw. ausvoten%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Blendet das Warcraft3 Menu ein für weitere Einstellungen und Erklärungen%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - Mit diesem Befehl können verfuegbare Schadens Wellen platziert werden%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills - Loescht dein Level und deine XP auf 0",thereturn) show_motd(id,temp,"Warcraft 3 Frozen Throne Hilfe") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Hilfe Informationen ----") console_print(id,"Das binden von Tasten:") console_print(id,"1) Die ` Taste drücken um in die Konsole zu gelangen (links von der 1)") console_print(id,"2) Schreibe bind alt ultimate (so aktiviert die ALT Taste das Ultimate)") console_print(id,"3) Schreibe bind - shopmenu (so aktiviert die - Taste das shopmenu)") console_print(id,"4) Schreibe bind = shopmenu2 (so aktiviert die = Taste das shopmenu2)") console_print(id,"5) Schreibe bind p ability (so aktiviert die p Taste die Fertigkeit einiger Rassen)") console_print(id,"Es gibt noch einige Befehle mehr um das WC3-Plugin vollständig zu nutzen.") console_print(id,"Spieler Befehle (einfach in den Chat schreiben mit oder ohne / ) :") console_print(id,"say /selectskill - Fähigkeiten deiner Rasse auswählen ") console_print(id,"say /changerace - Rasse wechseln") console_print(id,"say /playerskills - Rassen und Fähigkeiten Anzeige aller Spieler") console_print(id,"say /skillsinfo - Erklärungen der Fähigkeiten deiner Rasse") console_print(id,"say /itemsinfo - Erklärung der Gegenstände im shopmenu") console_print(id,"say /itemsinfo2 - Erklärung der Gegenstände im shopmenu2") console_print(id,"say /level - Zeigt deine Rasse, Fähigkeiten ,Level und Erfahrungspunkte an") console_print(id,"say /war3vote - Vote to switch the plugin on and off") console_print(id,"say /war3menu - Blendet das Warcraft3 Menu ein für weitere Einstellungen und Erklärungen") console_print(id,"say /ability - if you have serpent wards it will plant them") console_print(id,"say /resetskills - resets your skills") console_print(id,"say /resetxp - Will reset your level and XP to 0") console_print(id,"---- Warcraft 3 Frozen Throne Hilfe Informationen ----") } return PLUGIN_CONTINUE #endif #if LANG_FRE if(saychat==1){ pos += format(temp[pos], 2048-pos, "Comment binder une touche de votre clavier:%s",thep) pos += format(temp[pos], 2048-pos, "1) Pour binder vos touches taper ces commandes dans votre console%s",thereturn) pos += format(temp[pos], 2048-pos, "2) bind alt ultimate (maintenant le bouton alt activera votre ultimate)%s",thereturn) pos += format(temp[pos], 2048-pos, "3) bind - shopmenu (maintenant - bouton activera le shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "4) bind = shopmenu2 (maintenant = le bouton activera le 2eme shopmenu)%s",thereturn) pos += format(temp[pos], 2048-pos, "5) bind p ability (requises pour certaine abilitations)%s",thep) pos += format(temp[pos], 2048-pos, "Il y a quelques commandes que vous devez connaitre, pour profiter du plugin:%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Vous permet de choisir vos pouvoirs avant le debut du prochains round%s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Vous permet de changer de race%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Pour connaitre la race et les pouvoirs des autres joueurs%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Pour voir les pouvoirs de la race que vous avez selectionne%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Infos sur les articles dans le shopmenu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Infos sur les articles dans le shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Pour connaitre votre niveau et vos pouvoirs%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3_vote - Pour voter et mettre le plugin on ou off%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Pour avoir le menu de WarCraft3 FT%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - Pour poser un %s, si vous en avez%s",race6skill[2],thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills 'pseudo' - Mettre vos pouvoirs a 0%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetxp 'pseudo' - Mettre votre niveau et XP a 0") show_motd(id,temp,"Warcraft 3 Frozen Throne Aide") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Aides et Informations ----") console_print(id,"Comment binder une touche de votre clavier:%s",thep) console_print(id,"1) Pour binder vos touches taper ces commandes dans votre console") console_print(id,"2) bind alt ultimate (maintenant le bouton alt activera votre ultimate)") console_print(id,"3) bind - shopmenu (maintenant - bouton activera le shopmenu)") console_print(id,"4) bind = shopmenu2 (maintenant = le bouton activera le 2eme shopmenu)") console_print(id,"5) bind p ability (requises pour certaine abilitations)") console_print(id,"Il y a quelques commandes que vous devez connaitre, pour profiter du plugin:") console_print(id,"say /selectskill - Vous permet de choisir vos pouvoirs avant le debut du prochains round") console_print(id,"say /changerace - Vous permet de changer de race") console_print(id,"say /playerskills - Pour connaitre la race et les pouvoirs des autres joueurs") console_print(id,"say /skillsinfo - Pour voir les pouvoirs de la race que vous avez selectionne") console_print(id,"say /itemsinfo - Infos sur les articles dans le shopmenu") console_print(id,"say /itemsinfo2 - Infos sur les articles dans le shopmenu2") console_print(id,"say /level - Pour connaitre votre niveau et vos pouvoirs") console_print(id,"say /war3_vote - Pour voter et mettre le plugin on ou off") console_print(id,"say /war3menu - Pour avoir le menu de WarCraft3 FT%s") console_print(id,"say /ability - Pour poser un %s, si vous en avez",race6skill[2]) console_print(id,"say /resetskills 'pseudo' - Mettre vos pouvoirs a 0") console_print(id,"say /resetxp 'pseudo' - Mettre votre niveau et XP a 0") console_print(id,"---- Warcraft 3 Frozen Throne Aides et Informations ----") } return PLUGIN_CONTINUE #endif #if LANG_ENG if(saychat==1){ pos += format(temp[pos], 2048-pos, "This is how you bind a key:%s",thep) pos += format(temp[pos], 2048-pos, "1) Type ` to get to the console (key to the left of number 1)%s",thereturn) pos += format(temp[pos], 2048-pos, "2) Type bind alt ultimate%s",thereturn) pos += format(temp[pos], 2048-pos, "3) Type bind - shopmenu %s",thereturn) pos += format(temp[pos], 2048-pos, "4) Type bind = shopmenu2%s",thereturn) pos += format(temp[pos], 2048-pos, "5) Type bind p ability%s",thep) pos += format(temp[pos], 2048-pos, "There are a few commands you need to know in order take full advantage of the plugin:%s",thep) pos += format(temp[pos], 2048-pos, "say /selectskill - Allows you to select skills before the start of the next round%s",thereturn) pos += format(temp[pos], 2048-pos, "say /changerace - Allows you to change your race%s",thereturn) pos += format(temp[pos], 2048-pos, "say /playerskills - Shows you what skills other players have chosen%s",thereturn) pos += format(temp[pos], 2048-pos, "say /skillsinfo - Shows you what each skill does for the race you have selected%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo - Shows you a list of items and what they do%s",thereturn) pos += format(temp[pos], 2048-pos, "say /itemsinfo2 - Shows you more items%s",thereturn) pos += format(temp[pos], 2048-pos, "say /level - Shows you what race, level and skills you have%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3vote - Vote to switch the plugin on and off%s",thereturn) pos += format(temp[pos], 2048-pos, "say /war3menu - Shows the War3 Frozen Throne Player menu%s",thereturn) pos += format(temp[pos], 2048-pos, "say /ability - if you have serpent wards it will plant them%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetskills - resets your skills%s",thereturn) pos += format(temp[pos], 2048-pos, "say /resetxp - Will reset your level and XP to 0") show_motd(id,temp,"Warcraft 3 Frozen Throne Help") } else{ console_print(id,"---- Warcraft 3 Frozen Throne Help Information ----") console_print(id,"This is how you bind a key:") console_print(id,"1) Type ` to get to the console (key to the left of number 1)") console_print(id,"2) Type bind alt ultimate") console_print(id,"3) Type bind - shopmenu") console_print(id,"4) Type bind = shopmenu2") console_print(id,"5) Type bind p ability") console_print(id,"There are a few commands you need to know in order take full advantage of the plugin:") console_print(id,"say /selectskill - Allows you to select skills before the start of the next round") console_print(id,"say /changerace - Allows you to change your race") console_print(id,"say /playerskills - Shows you what skills other players have chosen") console_print(id,"say /skillsinfo - Shows you what each skill does for the race you have selected") console_print(id,"say /itemsinfo - Shows you a list of items and what they do") console_print(id,"say /itemsinfo2 - Shows you more items") console_print(id,"say /level - Shows you what race, level and skills you have") console_print(id,"say /war3vote - Vote to switch the plugin on and off") console_print(id,"say /war3menu - Shows the War3 Frozen Throne Player menu") console_print(id,"say /ability - if you have serpent wards it will plant them") console_print(id,"say /resetskills - resets your skills") console_print(id,"say /resetxp - Will reset your level and XP to 0") console_print(id,"---- Warcraft 3 Frozen Throne Help Information ----") } return PLUGIN_CONTINUE #endif } public ultimate(id){ if (warcraft3==false) return PLUGIN_CONTINUE if (freezetime==1){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) //show_hudmessage(id,"You may not use your ultimate during freezetime") //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Vous ne pouvez pas utiliser votre ULTIMATE pendant le freezetime") #else show_hudmessage(id,"You may not use your ultimate during freezetime") #endif //End Change return PLUGIN_HANDLED } if(u_delay){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) //show_hudmessage(id,"Ultimates are disabled for the^nfirst %d seconds of the round",get_cvar_num("FT_ultimatedelay")) //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Les Ultimates sont desactivees pendant les^n%d premieres secondes du round",get_cvar_num("FT_ultimatedelay")) #else show_hudmessage(id,"Ultimates are disabled for the^nfirst %d seconds of the round",get_cvar_num("FT_ultimatedelay")) #endif //End Change return PLUGIN_HANDLED } if (is_user_alive(id)){ if (((p_skills[id][0] == 9 && race9Options[4] == 8) || p_skills[id][0] == 8) && p_skills[id][4]==1 && !ultimateused[id]) // Locust Swarm calllocustfunction(id) if (((p_skills[id][0] == 9 && race9Options[4] == 1) || p_skills[id][0] == 1) && p_skills[id][4]==1){ if (get_cvar_num("FT_warn_suicide")){ if( suicideAttempt[id] ){ user_kill(id,1) }else{ new parm[1] parm[0]=id icon_controller(id,ICON_FLASH) suicideAttempt[id] = 1 set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) //show_hudmessage(id,"Suicide Bomb Armed^nPress Again To Detonate") //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Bombe-Kamikaze Armee^nAppuie encore pour Exploser") #else show_hudmessage(id,"Suicide Bomb Armed^nPress Again To Detonate") #endif //End Change } } else user_kill(id,1) } if (((p_skills[id][0] == 9 && race9Options[4] == 6) || p_skills[id][0] == 6) && p_skills[id][4]==1 && !ultimateused[id]){ new parm[2] parm[0]=id parm[1]=3 godshealth[id]=get_user_health(id) set_user_health(id,get_user_health(id)+2048) hasgodmode[id]=true set_task(2.0,"reset_godmode",4500+id,parm,2) message_begin( MSG_ONE, 108, {0,0,0}, id ) // Bar (thanks to bad-at-this) write_byte( 2 ) // duration write_byte( 0 ) // duration message_end() if (file_exists("sound/warcraft3/divineshield.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/divineshield.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) ultimateused[id]=true icon_controller(id,ICON_FLASH) } if (((p_skills[id][0] == 9 && race9Options[4] == 5) || p_skills[id][0] == 5) && p_skills[id][4]==1 && !ultimateused[id]){ //Flame Strike fire_flamethrower(id) flame_count[id]++ if(flame_count[id]>5){ ultimateused[id]=true icon_controller(id,ICON_HIDE) flame_count[id]=0 } } if (((p_skills[id][0] == 9 && race9Options[4] == 2) || p_skills[id][0] == 2) && p_skills[id][4]==1 && !ultimateused[id]){ // Teleport if(get_cvar_num("FT_blinkenabled")>0){ if(get_cvar_num("FT_blinkstartdisabled")>0){ if(blinkdelayed[id]){ set_hudmessage(178, 14, 41, -1.0, -0.4, 1, 0.5, 1.7, 0.2, 0.2,5) //show_hudmessage(id,"Blink Disabled for the^nfirst %f seconds of the round",get_cvar_float("FT_blink_delay")) //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Transfert Desactivee pendant les ^n%f premiere secondes du round",get_cvar_float("FT_blink_delay")) #else show_hudmessage(id,"Transfert Disabled for the^nfirst %f seconds of the round",get_cvar_float("FT_blink_delay")) #endif //End Change return PLUGIN_HANDLED } } /* native get_user_origin(index, origin[3], mode = 0); Gets origin from player. Modes: 0 - current position. 1 - position from eyes (weapon aiming). 2 - end position from player position. 3 - end position from eyes (hit point for weapon). <--- Hello hello 4 - position of last bullet hit (only CS). */ ultimateused[id]=true new oldLocation[3] new newLocation[3] new parm[3] parm[0] = id if (get_cvar_num("FT_blink_diziness")==2){ // This will cause Teleportation Blueness message_begin(MSG_ONE, gmsgFade, {0,0,0}, id) // use the magic #1 for "one client" write_short(1<<12) // fade lasts this long duration write_short(1<<8) // fade lasts this long hold time write_short(1<<0) // fade type IN write_byte(76) // fade red write_byte(163) // fade green write_byte(223) // fade blue write_byte(200) // fade alpha message_end() } get_user_origin(id, oldLocation) // Makes sure nearby enemy doesn't have immunity new teamname[32], players[32], numplayers, targetorigin[3], targetid get_user_team(id, teamname, 31) if(contain(teamname, "CT") != -1) get_players(players, numplayers, "ae", "TERRORIST") else get_players(players, numplayers, "ae", "CT") for (new i=0; i 0 ){ newLocation[0] -= 50 }else{ newLocation[0] += 50 } if( (newLocation[1] - oldLocation[1] ) > 0 ){ newLocation[1] -= 50 }else{ newLocation[1] += 50 } newLocation[2] += 40 savedNewLoc[id] = newLocation //client_print(id,print_chat,"arrive at: x:%i y:%i z%i",newLocation[0],newLocation[1],newLocation[2]) if (file_exists("sound/warcraft3/blinkarrival.wav")==1) emit_sound(id,CHAN_STATIC, "warcraft3/blinkarrival.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_STATIC, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) // blast circles message_begin( MSG_PAS, SVC_TEMPENTITY, oldLocation ) write_byte( TE_BEAMCYLINDER ) write_coord( oldLocation[0]) write_coord( oldLocation[1]) write_coord( oldLocation[2] + 10) write_coord( oldLocation[0]) write_coord( oldLocation[1]) write_coord( oldLocation[2] + 10 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() // Stop bomb planting... client_cmd(id,"-use") if (get_cvar_num("FT_blink_protection")){ new mapname[32] get_mapname(mapname,32) if (equali(mapname,"as_oilrig")){ if (newLocation[0]>1530 && get_user_team(id)==TEAM_CT){ client_cmd(id,"kill") //client_print(id,print_chat,"[%s] You have been slain for teleporting into a restricted area",MOD) //Change 10/07/2004 #if LANG_FRE client_print(id,print_chat,"[%s] Vous avez ete foudroye pour vous etes teleporte dans une zone restreinte",MOD) #else client_print(id,print_chat,"[%s] You have been slain for teleporting into a restricted area",MOD) #endif //End Change return PLUGIN_HANDLED } } } // Test sending player, should work most of the time. set_user_origin( id, newLocation) new Float:PlayerOrigin[3] Entvars_Get_Vector(id, EV_VEC_origin, PlayerOrigin) if (get_cvar_num("FT_blink_protection")) set_task(1.5, "ceiling_check", 23+id, parm, 2) // Check if Blink laned you in a wall, if so, abort parm[1] = 1 set_task(0.1, "blink_controller", 10098, parm, 2) ultimateused[id]=true icon_controller(id,ICON_HIDE) if (file_exists("sound/warcraft3/blinkarrival.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/blinkarrival.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "x/x_shoot1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) message_begin( MSG_PAS, SVC_TEMPENTITY, newLocation ) write_byte( TE_BEAMCYLINDER ) write_coord( newLocation[0]) write_coord( newLocation[1]) write_coord( newLocation[2] + 90) write_coord( newLocation[0]) write_coord( newLocation[1]) write_coord( newLocation[2] + 90 + TELEPORT_RADIUS) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 3 ) // life write_byte( 60 ) // width write_byte( 0 ) // noise write_byte( 255 ) // red write_byte( 255 ) // green write_byte( 255 ) // blue write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() } else { new i new j new tmp new numberofplayers new targetid new targetid2 new teamname[32] new distancebetween new distancebetween2 new origin[3] new targetorigin[3] new targetorigin2[3] get_user_team(id, teamname, 31) get_players(teleportid[id],numberofplayers,"ae",teamname) get_user_origin(id,origin) for (i=0; i 9) numberofplayers=9 else --numberofplayers // Remove self from list if (numberofplayers){ remove_task(666+id) teleportmenu[id]=true new menuparm[2] menuparm[0]=id menuparm[1]=numberofplayers telemenu(menuparm) } else{ set_hudmessage(178, 14, 41, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 5) //show_hudmessage(id,"No valid targets found!") //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Aucune Cible Valide Trouvee!") #else show_hudmessage(id,"No valid targets found!") #endif //End Change } } } if (!issearching[id] && ((p_skills[id][0] == 9 && race9Options[4] == 3) || p_skills[id][0] == 3) && p_skills[id][4]==1 && !ultimateused[id]){ // Chain Lightning new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME lightsearchtarget(parm) } if (!issearching[id] && ((p_skills[id][0] == 9 && race9Options[4] == 4) || p_skills[id][0] == 4) && p_skills[id][4]==1 && !ultimateused[id]){ // Entangle Roots new parm[2] parm[0]=id parm[1]=ULTIMATESEARCHTIME searchtarget(parm) } } return PLUGIN_HANDLED } public ceiling_check(parm[2]){ new id = parm[0] new mapname[32] new slay=0 new origin[3] get_user_origin(id,origin) new x = origin[0] new y = origin[1] new z = origin[2] get_mapname(mapname,32) new Float:porigin[3] Entvars_Get_Vector(id,EV_VEC_origin,porigin) //#define CONTENTS_SKY -6 if(PointContents(porigin)==-6) slay=1 if (equali(mapname,"de_dust")){ if(z>220) slay=1 } else if (equali(mapname,"awp_assault")){ if(z>520){ if((y>2400 && y<2600)) slay=1 } } else if (equali(mapname,"de_dust_cz")){ if(z>220) slay=1 } else if (equali(mapname,"de_aztec_cz")){ if(z>300) slay=1 } else if (equali(mapname,"cs_assault_upc")){ if(z>650) slay=1 } else if (equali(mapname,"de_aztec")){ if(z>300) slay=1 } else if (equali(mapname,"de_cbble")){ if (z>315){ if((x>-1320 && x<-1150) && (y>2600 && y<2900)) return else slay=1 } } else if (equali(mapname,"de_cbble_cz")){ if (z>315){ if((x>-1320 && x<-1150) && (y>2600 && y<2900)) return else slay=1 } } else if (equali(mapname,"cs_assault")){ if(z>700) slay=1 } else if (equali(mapname,"cs_militia")){ if(z>500) slay=1 } else if (equali(mapname,"cs_militia_cz")){ if(z>500) slay=1 } else if (equali(mapname,"cs_italy")){ if(z>-220){ if(y<-2128) slay=1 } if(z>250){ if ((x<-1000 && x>-1648) && (y>1900 && y<2050)) slay=1 if ((x<-1552 && x>-1648) && (y>1520 && y<2050)) slay=1 } } else if (equali(mapname,"cs_italy_cz")){ if(y>2608) slay=1 } else if (equali(mapname,"de_dust2")){ if(z>270) slay=1 } else if (equali(mapname,"de_dust2_cz")){ if(z>270) slay=1 } else if (equali(mapname,"fy_dustworld")){ if(z>82) slay=1 } else if (equali(mapname,"fy_pool_day")){ if(z>190) slay=1 } else if (equali(mapname,"as_oilrig") ){ if (x>1530 && get_user_team(id)==TEAM_CT) slay=1 else if(x>1700) slay=1 } else slay=0 if(equali(mapname,"cs_mice_final")) slay=0 if(slay){ new name[32] get_user_name(id,name,31) #if LANG_FRE client_print(id,print_chat,"[%s] Vous avez ete foudroye pour vous etes teleporte dans une zone restreinte",MOD) #else client_print(id,print_chat,"[%s] You have been slain for teleporting into a restricted area",MOD) #endif set_user_health(id,-1) } } public blink_controller(parm[2]){ new id = parm[0] new newLocation[3] new curLocation[3] new oldLocation[3] new origin[3] if( parm[1] == 1){ // Teleport failure check and unsticker new coolparm[1] coolparm[0] = id newLocation = savedNewLoc[id] get_user_origin(id, curLocation, 0) //client_print(id,print_chat,"blinked to: x:%i y:%i z%i",newLocation[0],newLocation[1],newLocation[2]) //client_print(id,print_chat,"currently: x:%i y:%i z%i",curLocation[0],curLocation[1],curLocation[2]) if( newLocation[2] == curLocation[2] ){ // Teleportation Failure oldLocation = savedOldLoc[id] //client_print(id,print_chat,"sent back to: x:%i y:%i z%i",oldLocation[0],oldLocation[1],oldLocation[2]) //set_hudmessage(red, green, blue, Float:x=-1.0, Float:y=1.45, effects=0, Float:fxtime=6.0, Float:holdtime=12.0, Float:fadeintime=0.1, Float:fadeouttime=0.2,channel=4); set_hudmessage(255, 255, 10, -1.0, -0.4, 1, 0.5, get_cvar_float("FT_blink_cooldown"), 0.2, 0.2,5); #if LANG_FRE show_hudmessage(id,"Teleportation Echouee^nMauvaise Destination"); #else show_hudmessage(id,"Teleport Failed^nBad Destination"); #endif set_user_origin( id, oldLocation) parm[1] = 0 set_task(0.1, "blink_controller", 0, parm, 2) set_task(get_cvar_float("FT_blink_cooldown"),"cooldown",50 + id,coolparm,1) }else{ // Teleportation Success if not near player with immunity new teamname[32] new players[32] new numplayers new targetorigin[3] new targetid new bool:teleportSuccess = true get_user_origin(id, origin) get_user_team(id, teamname, 31) if( contain(teamname, "CT") != -1 ){ get_players(players, numplayers, "ae", "TERRORIST") }else{ get_players(players, numplayers, "ae", "CT") } for (new i=0; i10 && get_user_team(id)==get_user_team(targetid) && key!=9 && !ultimateused[id]){ ultimateused[id]=true icon_controller(id,ICON_HIDE) new waitparm[6] waitparm[0]=id waitparm[1]=targetid waitparm[5]=floatround(get_user_maxspeed(id)) set_user_maxspeed(id,1.0) stunned[id]=true telewaitstop(waitparm) new cooldownparm[1] cooldownparm[0]=id set_task(get_cvar_float("FT_teleport_cooldown"),"cooldown",500+id,cooldownparm,1) } return PLUGIN_HANDLED } public telemenu(parm[2]){ new id = parm[0] new numberofplayers = parm[1] new targetid new name[32] new origin[3] new targetorigin[3] new distancebetween new temp[64] new i new keys = (1<<9) new menu_body[512] #if LANG_GER format(menu_body,511,"\yTeleportiere zu:\w^n") #endif #if LANG_FRE format(menu_body,511,"\yTeleportation:\w^n") #endif #if LANG_ENG format(menu_body,511,"\yTeleport To:\w^n") #endif get_user_origin(id,origin) for (i = 0; i < numberofplayers; ++i){ targetid=teleportid[id][i] get_user_name(targetid,name,31) get_user_origin(targetid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (is_user_alive(targetid)){ format(temp,63,"^n\w%d. %s (\y%dm\w)",i+1,name,distancebetween/40) keys |= (1<0) set_task(0.1,"teleportfadein",31,parm,3) return PLUGIN_CONTINUE } public unstickit(unstickparm[]){ new id=unstickparm[0] new origin[3] new targetorigin[3] origin[0]=unstickparm[1] origin[1]=unstickparm[2] origin[2]=unstickparm[3] new players[32] new numberofplayers get_players(players, numberofplayers) new i new playerid new bool:clear clear = true new distancebetween new tolerance = 100 for (i = 0; i < numberofplayers; ++i){ playerid=players[i] get_user_origin(playerid,targetorigin) distancebetween = get_distance(origin,targetorigin) if (distancebetween= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>0){ set_task(0.1,"searchtarget",21,parm,2) }else{ issearching[id]=false icon_controller(id,ICON_SHOW) } } return PLUGIN_CONTINUE } public walker(parm[2]){ // Prevents the sound of footsteps when walking at unholy aura lvl 3 new id = parm[0] #if !defined _amxmodx_included new velo[3] get_user_velocity(id, velo) new a,b if (velo[0]<0) a = velo[0] * -1 else a = velo[0] if (velo[1]<0) b = velo[1] * -1 else b = velo[1] new value = a + b if (((p_skills[id][0] == 9 && race9Options[2] == 1) || p_skills[id][0] == 1) && p_skills[id][2] && !freezetime && !stunned[id] && !slowed[id]){ if (value<234) set_user_maxspeed(id, 275.0) else set_user_maxspeed(id, p_unholy[p_skills[id][2]-1]) } #endif // Other function calls to do every .1 seconds client_cmd(id,"cl_minmodels 0") if(get_cvar_num("FT_centerhud")) client_cmd(id,"hud_centerid 0") // End Other function calls if (!endround) set_task(0.1,"walker",600+id,parm,2) } public waitstop(parm[6]){ new id=parm[0] new origin[3] get_user_origin(id, origin) if (origin[0]==parm[2] && origin[1]==parm[3] && origin[2]==parm[4]){ new normalspeed = parm[5] new resetparm[2] resetparm[0]=id resetparm[1]=normalspeed set_task(float(parm[1]/10),"reset_maxspeed",1000+id,resetparm,2) new entangleparm[2] entangleparm[0]=parm[0] entangleparm[1]=parm[1] entangle(entangleparm) } else{ parm[2]=origin[0] parm[3]=origin[1] parm[4]=origin[2] set_task(0.1,"waitstop",29,parm,6) } return PLUGIN_CONTINUE } public entangle(parm[2]){ // Entangle Roots (DOESN'T WORK ON BOTS) new id=parm[0] new life=parm[1] new radius = 20 new counter = 0 new origin[3] new x1 new y1 new x2 new y2 get_user_origin(id,origin) if (file_exists("sound/warcraft3/entanglingrootstarget1.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/entanglingrootstarget1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/electro5.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new parm2[1] parm2[0]=id set_task(20.0,"cooldown",500+id,parm2,1) while (counter<=7){ if (counter==0 || counter==8) x1= -radius else if (counter==1 || counter==7) x1= -radius*100/141 else if (counter==2 || counter==6) x1= 0 else if (counter==3 || counter==5) x1= radius*100/141 else if (counter==4) x1= radius if (counter<=4) y1 = sqrt(radius*radius-x1*x1) else y1 = -sqrt(radius*radius-x1*x1) ++counter if (counter==0 || counter==8) x2= -radius else if (counter==1 || counter==7) x2= -radius*100/141 else if (counter==2 || counter==6) x2= 0 else if (counter==3 || counter==5) x2= radius*100/141 else if (counter==4) x2= radius if (counter<=4) y2 = sqrt(radius*radius-x2*x2) else y2 = -sqrt(radius*radius-x2*x2) new height=16+2*counter while (height > -40){ message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( 0 ) write_coord(origin[0]+x1) write_coord(origin[1]+y1) write_coord(origin[2]+height) write_coord(origin[0]+x2) write_coord(origin[1]+y2) write_coord(origin[2]+height+2) write_short(iBeam4) // model write_byte( 0 ) // start frame write_byte( 0 ) // framerate write_byte( life ) // life write_byte( 10 ) // width write_byte( 5 ) // noise write_byte( 10 ) // r, g, b write_byte( 108 ) // r, g, b write_byte( 23 ) // r, g, b write_byte( 255 ) // brightness write_byte( 0 ) // speed message_end() height -= 16 } } return PLUGIN_CONTINUE } public lightsearchtarget(parm[2]){ new id = parm[0] new enemy, body get_user_aiming(id,enemy,body) if ( 0= 0){ counter -= 10 if (counter==0) emit_sound(id,CHAN_ITEM, "turret/tu_ping.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } --parm[1] if (parm[1]>0 && get_user_health(id)>=0){ set_task(0.1,"lightsearchtarget",26,parm,2) }else{ issearching[id]=false icon_controller(id,ICON_SHOW) } } return PLUGIN_CONTINUE } public lightningnext(parm[4]){ // Chain Lightning new id=parm[0] new caster=parm[3] new origin[3] get_user_origin(id, origin) new players[32] new teamname[32] get_user_team(id, teamname, 31) new numberofplayers get_players(players, numberofplayers,"ae",teamname) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] new damage = parm[1]*2/3 new linewidth = parm[2]*2/3 new closestdistance = 0 new closestid = 0 for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (get_user_team(id)==get_user_team(targetid) && is_user_alive(targetid) && is_user_alive(id)){ get_user_origin(targetid,targetorigin) distancebetween=get_distance(origin,targetorigin) if (distancebetween < LIGHTNING_RANGE && !lightninghit[targetid] && playeritem[targetid]!=IMMUNITY && !hasblink[targetid]){ if (distancebetween < closestdistance || closestid==0){ closestdistance = distancebetween closestid = targetid } } } } if (closestid){ lightningeffect(id,closestid,linewidth,damage,caster) parm[0]=targetid parm[1]=damage parm[2]=linewidth parm[3]=caster set_task(0.2,"lightningnext",27,parm,4) } else{ for (i = 0; i < numberofplayers; ++i){ targetid=players[i] lightninghit[targetid]=false } } return PLUGIN_CONTINUE } public lightningeffect(id,targetid,linewidth,damage,caster){ lightninghit[targetid]=true new parm[1] parm[0]=id icon_controller(id,ICON_HIDE) do_damage(targetid,caster, damage,11, 3, 0, 0, 0) if (get_user_armor(targetid)-damage<=0) set_user_armor(targetid,0) else set_user_armor(targetid,get_user_armor(targetid)-damage) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMENTS ); write_short(id); // start entity write_short(targetid); // entity write_short(lightning ); // model write_byte( 0 ); // starting frame write_byte( 15 ); // frame rate write_byte( 10 ); // life write_byte( linewidth ); // line width write_byte( 10 ); // noise amplitude write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // brightness write_byte( 0 ); // scroll speed message_end(); new origin[3] get_user_origin(targetid,origin) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_ELIGHT ); write_short(targetid); // entity write_coord(origin[0]) // initial position write_coord(origin[1]) // initial position write_coord(origin[2]) // initial position write_coord(100) // radius write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 255 ); // r, g, b write_byte( 10 ); // life write_coord(0) // decay rate message_end(); if (file_exists("sound/warcraft3/lightningbolt.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/lightningbolt.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) else emit_sound(id,CHAN_ITEM, "weapons/gauss2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_CONTINUE } public cooldown(parm[1]){ new id = parm[0] if (get_cvar_num("sv_restrictultimate")==0){ ultimateused[id]=false icon_controller(id,ICON_SHOW) } return PLUGIN_CONTINUE } public cooldown2(parm[1]){ new id = parm[0] if(((p_skills[id][0] == 9 && race9Options[4] == 2) || p_skills[id][0] == 2) && p_skills[id][4]){ blinkdelayed[id]=false icon_controller(id,ICON_SHOW) } return PLUGIN_CONTINUE } public udelay_cooldown(){ u_delay = false new numplayers, players[32] get_players(players, numplayers) for (new i=0; i0) set_task(0.1,"apacheexplode",33,parm,2) return PLUGIN_CONTINUE } public blastcircles(parm[]){ new id = parm[0] if(get_user_team(id)==SPEC) return PLUGIN_CONTINUE new origin[3] get_user_origin(id,origin) // blast circles message_begin( MSG_PAS, SVC_TEMPENTITY, origin ) write_byte( TE_BEAMCYLINDER ) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16 + get_cvar_num("FT_blast_radius")) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 6 ) // life write_byte( 16 ) // width write_byte( 0 ) // noise write_byte( 188 ) write_byte( 220 ) write_byte( 255 ) write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() message_begin( MSG_PAS, SVC_TEMPENTITY, origin ) write_byte( TE_BEAMCYLINDER ) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16) write_coord( origin[0]) write_coord( origin[1]) write_coord( origin[2] - 16 + ( get_cvar_num("FT_blast_radius") / 2 )) write_short( m_iSpriteTexture ) write_byte( 0 ) // startframe write_byte( 0 ) // framerate write_byte( 6 ) // life write_byte( 16 ) // width write_byte( 0 ) // noise write_byte( 188 ) write_byte( 220 ) write_byte( 255 ) write_byte( 255 ) //brightness write_byte( 0 ) // speed message_end() return PLUGIN_CONTINUE } public sqrt(num) { new div = num new result = 1 while (div > result) { // end when div == result, or just below div = (div + result) / 2 // take mean value as new divisor result = num / div } return div } public client_connect(id){ client_cmd(id, "hud_centerid 0") g_specMode[id] = false p_skills[id][0] = 0 p_skills[id][1] = 0 p_skills[id][2] = 0 p_skills[id][3] = 0 p_skills[id][4] = 0 p_level[id] = 0 playerxp[id] = 0 playeritem[id] = 0 playeritem2[id] = 0 isburning[id] = 0 he[id] = 0 if (is_user_bot(id) && get_cvar_num("mp_savexp")){ playerxp[id]=xplevel[floatround(random_float(0.0,3.16)*random_float(0.0,3.16))] p_skills[id][0] = random_num(1,8) return PLUGIN_CONTINUE } return PLUGIN_CONTINUE } public client_disconnect(id){ g_specMode[id] = false isburning[id] = 0 he[id]=0 diedlastround[id]=false for (new i=0; i<32; ++i){ // Equipment Reincarnation savedweapons[id][i]=0 } if (get_cvar_num("mp_savexp") && !is_user_bot(id) && p_skills[id][0] && playerxp[id]) write_xp_to_file(id) return PLUGIN_CONTINUE } public skills_info(id,saychat){ if (warcraft3==false) return PLUGIN_CONTINUE new message[2048] new title[64], temp[1024] new pos = 0 #if STEAM_POWERED new p[] = "

        " add(message,2047,"

        Click here for more detailed information regarding the new races, etc.. 

        ") #else new p[] = "^n^n" #endif #if LANG_GER if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) pos+= format(temp[pos],1024-pos,"Vampir Aura: Gibt dir (%d%%, %d%% oder %d%%) Gesundheit wieder zurück, wenn du Schaden verursachst.%s",floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"Unheilige Aura: Du bist schneller als alle anderen, egal mit welcher Waffe in der Hand (3 Stufen Schnelligkeit)%s",p) pos+= format(temp[pos],1024-pos,"Schweben: Du springst höher als alle anderen, und verlierst keine/wenig Gesundheit bei Stürzen (3 Stufen Schweben)%s",p) pos+= format(temp[pos],1024-pos,"Ultimate, Suicide Bomber: Wenn du stirbst explodierst du und reisst nahe Gegner mit in den Tod") } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) pos+= format(temp[pos],1024-pos,"Unsichtbarkeit: Du wirst mit jeder Stufe transparenter (mit dem Messer in der Hand fast unsichtbar) (3 Stufen Unsichtbarkeit)%s",p) pos+= format(temp[pos],1024-pos,"Hingabe Aura: Gibt dir einen Gesundheitsbonus von (%d, %d oder %d) HP in 3 Stufen, am Start jeder Runde.%s",p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"Hieb Aura: Wenn du jemanden triffst hast du eine Chance von (%d%%, %d%% or %d%%), das er sich für 1 Sekunde nicht bewegen kann.%s",floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, Blinzeln: Erlaubt es dir, dich dahin zu teleportieren, wohin du zielst.") else pos+= format(temp[pos],1024-pos,"Ultimate, Teleportieren: Die Möglichkeit sich zu teleportieren, in die Richtung deines Fadenkreuzes (alle 10 Sekunden möglich)") } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) pos+= format(temp[pos],1024-pos,"Kritische Treffer: Gibt dir eine 15%% Chance den 2, 3, oder 4 fachen Schaden mit jedem Schuss zu machen.%s",p) pos+= format(temp[pos],1024-pos,"Kritische Granaten: Granaten machen (%d, %d oder %d) mal soviel Schaden.%s",floatround(p_critical[0]*100),floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"Ausrüstungs-Reinkarnation: Gibt dir eine (%d%%, %d%% oder %d%%) Chance mit der kompletten Ausrüstung aus der letzten Runde zu starten, wenn du gefallen bist.%s",floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Kettenblitz: Die Möglichkeit einen Blitz hervorzubringen, der von Gegner zu Gegner springt und diese verletzt (50HP). Mit jedem 'Sprung' verringert sich jedoch der Schaden um 1/3.") } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) pos+= format(temp[pos],1024-pos,"Ausweichen: Gibt dir eine Chance von (%d%%, %d%% oder %d%%) einem Schuss auszuweichen.%s",floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"Dornen Aura: Macht einen Schaden von (%d%%, %d%% oder %d%%), an denen die dir Schaden zugefügt haben.%s",floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"Wahre Aura: Macht (%d%%, %d%% oder %d%%) extra Schaden mit jeder deiner Kugeln.%s",floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Wurzeln: Immobilisiert den getroffenen Gegner für 10 Sekunden. (er kann sich nicht bewegen!)") } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) pos+= format(temp[pos],1024-pos,"Pheonix: Du hast die Chance von (%d%%, %d%% oder %d%%), den ersten Teamkollegen der stirbt wiederzubeleben.%s",floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"Verbannen: Mit einer Wahrscheinlichkeit von (%d%%, %d%% oder %d%%) slapst du deinen Gegner.%s",floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"Siphon Mana: Stehle deinem Gegner (%d%%, %d%% oder %d%%) Geld%s",floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Flammenwerfer: Du erhälst einen Flammenwerfer.") } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) pos+= format(temp[pos],1024-pos,"Heilende Welle: Alle (%d%%, %d%% oder %d%%) Sekunden erhalten du und den dir am nächsten stehenden Teamkamaraden in der Nähe 1 HP.%s",floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"Hexen: Eine (%d%%, %d%% oder %d%%) Chance deinen Gegner in einen großen Goober zu verwandeln.%s",floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"Schadens Welle: Du hast die Mögleichkeit (%d, %d oder %d) magische Pfähle aufzustellen, die dem Gegner in der Nähe Schaden zufügen.%s",p_serpent[0],p_serpent[1],p_serpent[2],p) pos+= format(temp[pos],1024-pos,"Ultimate, Großer Böser Zauber: Du bist für 2 Sekunden unverwundbar!") } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) pos+= format(temp[pos],1024-pos,"Fan Of Knives: Du hast eine (%d%%, %d%% oder %d%%) Chance ein Spion nächste Runde zu sein. (Mole-Start am gegnerischen Startplatz)%s",floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"Blinzeln: Mit einer (%d%%, %d%% oder %d%%) Chance werden die Skills der Gegner in der Nähe unbrauchbar sein. (alle Skills!)%s",floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"Schattenschlag: Du hast die Chance von (%d%%, %d%% oder %d%%), einen vergifteten Pfeil auf deinen Gegner zu schiessen. (3 Pfeile max.)%s",floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Rache: Du wirst im Falle deinens Ablebens mit 50 HP wiederbelebt !") } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"Imaple(Verwirren): Ruckelt getroffene Gegner (Ihr Schirm wackelt)%s",p) pos+= format(temp[pos],1024-pos,"Spiked Carapace: Macht (%d%%, %d%% oder %d%%) Schaden am Gegner, wenn er dir schadet und gibt dir Armor zurück.%s",floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"Aas Käfer: Du hast eine (%d%%, %d%% oder %d%%) Chance das deine Käfer dem Gegner Schaden zufügen. %s",floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Heuschreckenschwarm: Du lässt einen Schwarm von Heuschracken auf den Gegner los") } else if (p_skills[id][0]==9){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"Ultimate, ENTERVAL: %s",p) } else{ client_cmd(id,"echo %s","You must select a race before selecting skills!") return PLUGIN_HANDLED } #endif #if LANG_FRE if (p_skills[id][0]==1){ format(title,63,"%s Competences",racename[1]) pos+= format(temp[pos],1024-pos,"%s: Convertis (%d%%, %d%% ou %d%%) des degats que vous faites en Point de Vie%s",race1skill[0],floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vous permet de courir a la meme vitesse et ce peu importe l'arme%s",race1skill[1],p) pos+= format(temp[pos],1024-pos,"%s: Vous permet de sauter plus haut en reduisant votre gravite%s",race1skill[2],p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Quand vous mourrez, Vous explosez tuant les ennemis se trouvant a proximite",race1skill[3]) } else if (p_skills[id][0]==2){ format(title,63,"%s Competences",racename[2]) pos+= format(temp[pos],1024-pos,"%s: Vous rends Partiellement Invisible, et plus difficile a voir%s",race2skill[0],p) pos+= format(temp[pos],1024-pos,"%s: Vous donne (%d, %d or %d) Point de vie au debut du round.%s",race2skill[1],p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"%s: Quand vous tirez sur quelqu'un vous avez (%d%%, %d%% ou %d%%) de chances de l'immobiliser pour 1 seconde%s",race2skill[2],floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Permet de se teleporter ou vous visez (attention au sol).",race2skill[3]) else pos+= format(temp[pos],1024-pos,"Ultimate, %s: Permet de vous teleporter a cote d'un equipier (10 secondes de repos)",race2skill[3]) } else if (p_skills[id][0]==3){ format(title,63,"%s Competences",racename[3]) pos+= format(temp[pos],1024-pos,"%s: Vous donne %d%% de chance de faire (2, 3, ou 4) fois plus de degats%s",race3skill[0],floatround(p_critical[0]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vos grenades feront TOUJOURS (%d, %d ou %d) fois plus de degats%s",race3skill[1],floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"%s: Permet d'avoir (%d%%, %d%% ou %d%%) de chances d'avoir a nouveau son equipement apres sa mort%s",race3skill[2],floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Envoi une decharge d'eclair qui saute vers l'ennemi",race3skill[3]) } else if (p_skills[id][0]==4){ format(title,63,"%s Competences",racename[4]) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance d'esquiver les tirs%s",race4skill[0],floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Retransmet (%d%%, %d%% ou %d%%) des degats a la personne qui vous tire dessus%s",race4skill[1],floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Inflige (%d%%, %d%% ou %d%%) degats supplementaires a votre ennemi%s",race4skill[2],floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Immobilise un ennemi pendant 10s",race4skill[3]) } else if (p_skills[id][0]==5){ format(title,63,"%s Competences",racename[5]) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance de faire revivre le premier de votre equipe qui meurt%s",race5skill[0],floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance de SLAPPER votre ennemi%s",race5skill[1],floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vole (%d%%, %d%% ou %d%%) de l'argent de votre ennemi%s",race5skill[2],floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Vous pouvez envoyer des flammes (1 utilisation toutes les 20 secondes)",race5skill[3]) } else if (p_skills[id][0]==6){ format(title,63,"%s Competences",racename[6]) pos+= format(temp[pos],1024-pos,"%s: Toutes les (%d%%, %d%% ou %d%%) secondes vous et vos equipiers proche de vous gagne 1 HP%s",race6skill[0],floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance de transformer votre ennemi en GOOMBA (en le ralentissant)%s",race6skill[1],floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d, %d ou %d) gardiens serpent a chaque round qui attaque les ennemis proche,%sbind une touche ^"ability^" (ou say ability) pour en poser un%s",race6skill[2],p_serpent[0],p_serpent[1],p_serpent[2],p,p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Invincibilite pour 2-3 secondes",race6skill[3]) } else if (p_skills[id][0]==7){ format(title,63,"%s Competences",racename[7]) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance de devenir un Agent Double (camouflage + respawn dans le camp ennemi)%s",race7skill[0],floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Desactive TOUTES les ultimates (%d%%, %d%% ou %d%%)%s",race7skill[1],floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: Vous avez (%d%%, %d%% ou %d%%) de chance de lancer une dague empoisonnee qui fera de gros degat sur votre ennemi%s",race7skill[2],floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Respawn 1 fois avec 50HP ",race7skill[3]) } else if (p_skills[id][0]==8){ format(title,63,"%s Competences",racename[8]) pos+= format(temp[pos],1024-pos,"%s: Distorts the enemy%s",race8skill[0],p) pos+= format(temp[pos],1024-pos,"%s: Ameliore votre armure et retransmet (%d%%, %d%% ou %d%%) des degats que vous fait ceux qui vous tirent dessus%s",race8skill[1],floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"%s: You have a (%d%%, %d%% or %d%%) de chances qu'un coleoptere attaque votre ennemi%s",race8skill[2],floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, %s: Un Essaim de sauterelles vertes attaque votre ennemi",race8skill[3]) } else if (p_skills[id][0]==9){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"Ultimate, ENTERVAL: %s",p) } else{ client_cmd(id,"echo %s","Vous devez selectionner une race avant!") return PLUGIN_HANDLED } #endif #if LANG_ENG if (p_skills[id][0]==1){ format(title,63,"%s Skills",racename[1]) pos+= format(temp[pos],1024-pos,"Vampiric Aura: Gives you (%d%%, %d%% or %d%%) of the damage you do in attack back as health%s",floatround(p_vampiric[0]*100),floatround(p_vampiric[1]*100),floatround(p_vampiric[2]*100),p) pos+= format(temp[pos],1024-pos,"Unholy Aura: Gives you a speed boost, also all weapons make you go at the same speed%s",p) pos+= format(temp[pos],1024-pos,"Levitation: Allows you to jump higher by reducing your gravity%s",p) pos+= format(temp[pos],1024-pos,"Ultimate, Suicide Bomber: When you die you will explode killing nearby enemies and regenerate") } else if (p_skills[id][0]==2){ format(title,63,"%s Skills",racename[2]) pos+= format(temp[pos],1024-pos,"Invisibility: Makes you partially invisible, you will be harder to see%s",p) pos+= format(temp[pos],1024-pos,"Devotion Aura: Gives you (%d, %d or %d) health at the start of the round.%s",p_devotion[0],p_devotion[1],p_devotion[2],p) pos+= format(temp[pos],1024-pos,"Bash: When you shoot someone you have a (%d%%, %d%% or %d%%) chance of rendering them immobile for 1 second%s",floatround(p_bash[0]*100),floatround(p_bash[1]*100),floatround(p_bash[2]*100),p) if (get_cvar_num("FT_blinkenabled")) pos+= format(temp[pos],1024-pos,"Ultimate, Blink: Allows you to teleport to where you aim (avoid ceilings).") else pos+= format(temp[pos],1024-pos,"Ultimate, Teleport: Allows you to teleport to a team mate (10 seconds cooldown)") } else if (p_skills[id][0]==3){ format(title,63,"%s Skills",racename[3]) pos+= format(temp[pos],1024-pos,"Critical Strike: Gives you a %d%% chance of doing (2, 3, or 4) times normal damage%s",floatround(p_critical[0]*100),p) pos+= format(temp[pos],1024-pos,"Critical Grenade: Grenades will ALWAYS do (%d, %d or %d) times normal damage%s",floatround(p_grenade[0]),floatround(p_grenade[1]),floatround(p_grenade[2]),p) pos+= format(temp[pos],1024-pos,"Equipment Reincarnation: Gives you a (%d%%, %d%% or %d%%) chance of regaining your equipment on death%s",floatround(p_ankh[0]*100),floatround(p_ankh[1]*100),floatround(p_ankh[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Chain Lightning: Discharges a bolt of lightning that jumps to all nearby enemies") } else if (p_skills[id][0]==4){ format(title,63,"%s Skills",racename[4]) pos+= format(temp[pos],1024-pos,"Evasion: Gives you a (%d%%, %d%% or %d%%) chance of evading each shot%s",floatround(p_evasion[0]*100),floatround(p_evasion[1]*100),floatround(p_evasion[2]*100),p) pos+= format(temp[pos],1024-pos,"Thorns Aura: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you%s",floatround(p_thorns[0]*100),floatround(p_thorns[1]*100),floatround(p_thorns[2]*100),p) pos+= format(temp[pos],1024-pos,"Trueshot Aura: Does (%d%%, %d%% or %d%%) extra damage to the enemy%s",floatround(p_trueshot[0]*100),floatround(p_trueshot[1]*100),floatround(p_trueshot[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Entangle Roots: Allows you to prevent an enemy player from moving for 10 seconds") } else if (p_skills[id][0]==5){ format(title,63,"%s Skills",racename[5]) pos+= format(temp[pos],1024-pos,"Pheonix: You have a (%d%%, %d%% or %d%%) chance of reviving the first teammate who dies%s",floatround(p_pheonix[0]*100),floatround(p_pheonix[1]*100),floatround(p_pheonix[2]*100),p) pos+= format(temp[pos],1024-pos,"Banish: You have a (%d%%, %d%% or %d%%) chance of slapping your enemy%s",floatround(p_banish[0]*100),floatround(p_banish[1]*100),floatround(p_banish[2]*100),p) pos+= format(temp[pos],1024-pos,"Siphon Mana: Steal (%d%%, %d%% or %d%%) of the enemy's money%s",floatround(p_mana[0]*100),floatround(p_mana[1]*100),floatround(p_mana[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Flame Strike: You receive a flame throwers (1 uses every 20 seconds)") } else if (p_skills[id][0]==6){ format(title,63,"%s Skills",racename[6]) pos+= format(temp[pos],1024-pos,"Healing Wave: Every (%d%%, %d%% or %d%%) seconds you and your nearby teammates around you gain 1 HP%s",floatround(p_heal[0]),floatround(p_heal[1]),floatround(p_heal[2]),p) pos+= format(temp[pos],1024-pos,"Hex: You have a (%d%%, %d%% or %d%%) chance of turning your enemy into a big goober (which slows them down)%s",floatround(p_hex[0]*100),floatround(p_hex[1]*100),floatround(p_hex[2]*100),p) pos+= format(temp[pos],1024-pos,"Serpent Ward: You receive (%d, %d or %d) serpent wards each round that damage nearby enemy units,%sbind a key to ability (or say ability) to plant one%s",p_serpent[0],p_serpent[1],p_serpent[2],p,p) pos+= format(temp[pos],1024-pos,"Ultimate, Bid Bad Voodoo: Invincibility for 2 seconds") } else if (p_skills[id][0]==7){ format(title,63,"%s Skills",racename[7]) pos+= format(temp[pos],1024-pos,"Fan of Knives: You have a (%d%%, %d%% or %d%%) chance of becoming a mole%s",floatround(p_fan[0]*100),floatround(p_fan[1]*100),floatround(p_fan[2]*100),p) pos+= format(temp[pos],1024-pos,"Blink: Disables ALL enemy ultimates (%d%%, %d%% or %d%%)%s",floatround(p_blink[0]*100),floatround(p_blink[1]*100),floatround(p_blink[2]*100),p) pos+= format(temp[pos],1024-pos,"Shadow Strike: You have a (%d%%, %d%% or %d%%) chance of hurling a poisoned dagger at the enemy%s",floatround(p_shadow[0]*100),floatround(p_shadow[1]*100),floatround(p_shadow[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Vengeance: Respawn once with 50 health") } else if (p_skills[id][0]==8){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"Impale: Distorts the enemy%s",p) pos+= format(temp[pos],1024-pos,"Spiked Carapace: Does (%d%%, %d%% or %d%%) mirror damage to the person who shot you and you gain armor%s",floatround(p_spiked[0]*100),floatround(p_spiked[1]*100),floatround(p_spiked[2]*100),p) pos+= format(temp[pos],1024-pos,"Carrion Beetles: You have a (%d%%, %d%% or %d%%) chance of your beetles attacking the enemy when on target%s",floatround(p_carrion[0]*100),floatround(p_carrion[1]*100),floatround(p_carrion[2]*100),p) pos+= format(temp[pos],1024-pos,"Ultimate, Locust Swarm: A Swarm of Green Locusts attacks the enemy") } else if (p_skills[id][0]==9){ format(title,63,"%s Skills",racename[8]) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"ENTERVAL: %s",p) pos+= format(temp[pos],1024-pos,"Ultimate, ENTERVAL: %s",p) } else{ client_cmd(id,"echo %s","You must select a race before selecting skills!") return PLUGIN_HANDLED } #endif if(p_skills[id][0]!=0) add(message,1023,temp) show_motd(id,message,"Race Information") if (saychat==1) return PLUGIN_CONTINUE return PLUGIN_HANDLED } public war3_vote(id,saychat) { if (get_cvar_num("sv_allowwar3vote")==0){ client_print(id,print_center,"Voting is not allowed on this server") return PLUGIN_CONTINUE } new name[32], auth[32] get_user_name(id,name,31) get_user_authid(id,auth,31) log_message("%s <%s> initiated a war3 vote",name,auth) console_print(0,"%s <%s> initiated a war3 vote",name,auth) if (voting > get_gametime()){ if(saychat==1) client_print(id,print_notify,"There is already one voting...") else console_print(id,"There is already one voting...") return PLUGIN_HANDLED } if (voting > 0.0 && voting + get_cvar_float("amx_vote_delay") > get_gametime()) { if(saychat==1) client_print(id,print_notify,"Voting not allowed at this time") else console_print(id,"Voting not allowed at this time") return PLUGIN_HANDLED } new keys = (1<<0)|(1<<1) new menu_msg[256] if (warcraft3==false) format(menu_msg,255,"\yEnable Warcraft 3 Plugin:\w^n^n1. Yes^n2. No") else format(menu_msg,255,"\yDisable Warcraft 3 Plugin:\w^n^n1. Yes^n2. No") new Float:vote_time = get_cvar_float("amx_vote_time") + 2.0 voting = get_gametime() + vote_time vote_ratio = get_cvar_float("amx_votewar3_ratio") show_menu(0,keys,menu_msg,floatround(vote_time)) set_task(vote_time,"check_votes") console_print(id,"Voting has started...") option=0 if (saychat==1) return PLUGIN_CONTINUE return PLUGIN_HANDLED } public vote_count(id,key){ if (get_cvar_float("amx_vote_answers")) { new name[32] get_user_name(id,name,31) client_print(0,print_chat,"* %s voted %s",name,key ? "against" : "for" ) } if (!key) ++option return PLUGIN_HANDLED } public check_votes() { new status[32] new players[32], inum get_players(players,inum,"c") new Float:result_v = inum ? (float(option) / float(inum)) : 0.0 if (result_v=1 && str_to_num(race)<=9) racexp[str_to_num(race)-1] = str_to_num(xp) mysql_check_error() } if (p_skills[id][0]) racexp[p_skills[id][0]-1]=playerxp[id] if(get_cvar_num("FT_9race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7], racexp[8]) else if(get_cvar_num("FT_8race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7]) else if(get_cvar_num("FT_5race")) server_cmd("display_race_select %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4]) else if(get_cvar_num("FT_4race")) server_cmd("display_race_select %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3]) } else{ if(get_cvar_num("FT_saveby")==0) // Save by steam ID format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,playerid,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==1) // Save by IP address format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,ip,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==2) // Save by Player name format(mquery, 1023, "SELECT * FROM `%s` WHERE playerid='%s' AND race='%d'",mysqltablename,playername,p_skills[id][0]) mysql_query(mysql,mquery) mysql_check_error() if (mysql_nextrow(mysql)){ mysql_getfield(mysql,3,xp,7) mysql_getfield(mysql,5,skill1,1) mysql_getfield(mysql,6,skill2,1) mysql_getfield(mysql,7,skill3,1) mysql_getfield(mysql,8,skill4,1) playerxp[id]=str_to_num(xp) p_skills[id][1]=str_to_num(skill1) p_skills[id][2]=str_to_num(skill2) p_skills[id][3]=str_to_num(skill3) p_skills[id][4]=str_to_num(skill4) displaylevel(id,0) } else{ playerxp[id]=0 p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 displaylevel(id,0) } } } else{ // Get info from a vault new info[512], temp[128] new i, attempt if (returnrace) { for(i=1;i<9;i++){ format(xp,7,"") format(race,1,"") format(temp,127,"") if(get_cvar_num("FT_saveby")==0) // Get info by steam ID format(temp,127,"%s_%d",playerid,i) else if(get_cvar_num("FT_saveby")==1) // Get info by IP address format(temp,127,"%s_%d",ip,i) else if(get_cvar_num("FT_saveby")==2) // Get info by Player name format(temp,127,"%s_%d",playername,i) attempt = get_vaultdata(temp,info,511) parse(info, playerid,31, xp,7, race,1, skill1,1, skill2,1, skill3,1, skill4,1) if (str_to_num(race)>=1 && str_to_num(race)<=9) racexp[str_to_num(race)-1] = str_to_num(xp) } if (p_skills[id][0]) racexp[p_skills[id][0]-1]=playerxp[id] if(get_cvar_num("FT_9race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7], racexp[8]) else if(get_cvar_num("FT_8race")) server_cmd("display_race_select %d %d %d %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4], racexp[5], racexp[6], racexp[7]) else if(get_cvar_num("FT_5race")) server_cmd("display_race_select %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4]) else if(get_cvar_num("FT_4race")) server_cmd("display_race_select %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3]) } else{ if(get_cvar_num("FT_saveby")==0) // Get info by steam ID format(temp,127,"%s_%d",playerid,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==1) // Get info by IP address format(temp,127,"%s_%d",ip,p_skills[id][0]) else if(get_cvar_num("FT_saveby")==2) // Get info by Player name format(temp,127,"%s_%d",playername,p_skills[id][0]) attempt = get_vaultdata(temp,info,511) if (attempt){ parse(info, playerid,31, xp,7, race,1, skill1,1, skill2,1, skill3,1, skill4,1) playerxp[id]=str_to_num(xp) p_skills[id][1]=str_to_num(skill1) p_skills[id][2]=str_to_num(skill2) p_skills[id][3]=str_to_num(skill3) p_skills[id][4]=str_to_num(skill4) displaylevel(id,0) } else{ playerxp[id]=0 p_skills[id][1]=0 p_skills[id][2]=0 p_skills[id][3]=0 p_skills[id][4]=0 displaylevel(id,0) } } } return PLUGIN_CONTINUE } public set_mysql(){ if (get_cvar_num("sv_mysql")) { get_cvar_string("sv_mysqltablename",mysqltablename,63) new mhost[64], muser[32], mpass[32], mdb[32], primarykey[128] new merror[256] new mquery[512] format (mquery, 511, "CREATE TABLE IF NOT EXISTS `%s` ( `playerid` VARCHAR(35) NOT NULL, `playername` VARCHAR(35) NOT NULL, `xp` INT(11) NOT NULL, `race` TINYINT(4) NOT NULL, `skill1` TINYINT(4), `skill2` TINYINT(4), `skill3` TINYINT(4), `skill4` TINYINT(4), `time` TIMESTAMP( 14 ) NOT NULL, PRIMARY KEY (playerid,race))",mysqltablename) get_cvar_string("FT_mysql_host",mhost,63) get_cvar_string("FT_mysql_user",muser,31) get_cvar_string("FT_mysql_pass",mpass,31) get_cvar_string("FT_mysql_db",mdb,31) mysql = mysql_connect(mhost,muser,mpass,mdb,merror,256) if (merror[0]) { server_print("MYSQL Error Connect: %s", merror) } mysql_query(mysql,mquery) mysql_check_error() format(mquery, 511, "show index from `%s`", mysqltablename) mysql_query(mysql,mquery) mysql_check_error() if (mysql_nextrow(mysql)){ mysql_getfield(mysql,5,primarykey,127) } if (contain(primarykey,"playerid")){ // contain() returns 0 if the two strings match exactly format(mquery, 511, "ALTER TABLE `%s` DROP PRIMARY KEY , ADD PRIMARY KEY ( `playerid` , `race` )", mysqltablename) mysql_query(mysql,mquery) mysql_check_error() } } return PLUGIN_CONTINUE } public mysql_check_error(){ new merror[256] mysql_error(mysql,merror,255) if (merror[0]) { server_print("MYSQL Error Query: %s", merror) } } public plugin_end(){ if (!warcraft3 || !get_cvar_num("mp_savexp")) return PLUGIN_CONTINUE write_all() if (get_cvar_num("sv_mysql_auto_pruning") && get_cvar_num("sv_mysql") && get_cvar_num("mp_savexp")){ new mquery[1024] new currentHour[3] new currentMin[3] get_time("%H",currentHour,2) get_time("%M",currentMin,2) // At 5:36 AM until 5:59 AM a mapchange will trigger an auto-prune. if((str_to_num(currentHour) == 5) && (str_to_num(currentMin) > 35 )){ // Timestamp format: 20030912122142 // Y = 2003 M = 09 D = 12 H = 12 M = 21 S = 42 format(mquery, 1023, "DELETE FROM `%s` WHERE `time` + %d < now()",mysqltablename, get_cvar_num("sv_daysbeforedelete") * 1000000) mysql_query(mysql,mquery) mysql_check_error() } } if (get_cvar_num("sv_mysql")) mysql_close(mysql) // Autopruning code for the vault goes here.... kinda of a pain in the ass so I'm putting it on hold for a bit /* if(get_cvar_num("sv_mysql_auto_pruning") && get_cvar_num("sv_mysql")==0 && get_cvar_num("mp_savexp")){ new nextline=0 new textline[128], textlength, playerid[32], playername[32] new xp[8], race[2], skill1[2], skill2[2], skill3[2], skill4[2] new month[3], day[3], hour[3], minutes[3], temp[3], timet[32] new currentmonth[3], currentday[3], currenthour[3],dayofyear, currentdayofyear new xpnumber, i, playerlevel new daysinmonth[12] = {31,28,31,30,31,30,31,31,30,31,30,31} if (file_exists(XPFILENAME)){ do{ nextline=read_file(XPFILENAME,nextline,textline,127,textlength) if (contain(textline,"##")==0){ parse(textline, temp,2, month,2, day,2, hour,2, minutes,2) break } } while (nextline) get_time("%d",currentday,2) get_time("%m",currentmonth,2) get_time("%H",currenthour,2) if (!equal(currentday,day,2) || !equal(currentmonth,month,2)){ client_print(0,print_chat,"Updating %s...",XPFILENAME) get_time("%m %d %H %M",timet,31) format(textline, 127, "## %s", timet) write_file(XPFILENAME,textline,nextline-1) currentdayofyear = str_to_num(currentday) for (i=1; i=xplevel[i]) playerlevel=i else break } dayofyear = str_to_num(day)+DAYS_BEFORE_DELETE+playerlevel for (i=1; i365) dayofyear-=365 if (dayofyear <= currentdayofyear){ write_file(XPFILENAME,"",nextline-1) } } } while (nextline) remove_empty_lines() } } }*/ return PLUGIN_CONTINUE } public set_longtermxp(){ if (get_cvar_num("mp_savexp")){ BOMBPLANTXP /= 10 DEFUSEXP /= 10 HOSTAGEXP /= 10 KILLRESCUEMANXP /= 10 XPBONUS /= 10 KILL_BOMB_CARRIER /= 10 HEADSHOT_BONUS /= 10 DEFUSER_KILL_BONUS /= 10 VIP_ESCAPE_BONUS /= 10 ROUNDXP /= 10 xpgiven = {6,8,10,12,14,16,20,24,28,32,40} xplevel = {0,100,200,400,800,1600,3200,6400,12800,25600,51200} if (get_cvar_float("mp_xpmultiplier")){ new Float:xpmultiplier=get_cvar_float("mp_xpmultiplier") for (new i=0; i<11; i++) xplevel[i] = floatround(xplevel[i] * xpmultiplier) } } return PLUGIN_CONTINUE } public set_shorttermxp(){ if (get_cvar_num("mp_savexp")==0){ BOMBPLANTXP /= 3 DEFUSEXP /= 3 HOSTAGEXP /= 3 KILLRESCUEMANXP /= 3 XPBONUS /= 3 KILL_BOMB_CARRIER /= 3 HEADSHOT_BONUS /= 3 DEFUSER_KILL_BONUS /= 3 VIP_ESCAPE_BONUS /= 3 ROUNDXP /= 3 xplevel = {0,150,300,600,1000,1500,2100,2800,3400,4500,5500} xpgiven = {60,80,100,120,140,160,180,200,220,240,260} if (get_cvar_float("mp_xpmultiplier")){ new Float:xpmultiplier=get_cvar_float("mp_xpmultiplier") for (new i=0; i<11; i++) xplevel[i] = floatround(xplevel[i] * xpmultiplier) } } return PLUGIN_CONTINUE } public display_race_select(){ new id, idtext[3], menu_msg[512] new racexp1[8], racexp2[8], racexp3[8], racexp4[8], racexp5[8], racexp6[8], racexp7[8], racexp8[8], racexp9[8] read_argv(1,idtext,2) read_argv(2,racexp1,7) read_argv(3,racexp2,7) read_argv(4,racexp3,7) read_argv(5,racexp4,7) if(get_cvar_num("FT_9race")){ read_argv(6,racexp5,7) read_argv(7,racexp6,7) read_argv(8,racexp7,7) read_argv(9,racexp8,7) read_argv(10,racexp9,7) } else if(get_cvar_num("FT_8race")){ read_argv(6,racexp5,7) read_argv(7,racexp6,7) read_argv(8,racexp7,7) read_argv(9,racexp8,7) } else if(get_cvar_num("FT_5race")) read_argv(6,racexp5,7) id = str_to_num(idtext) #if LANG_GER if(get_cvar_num("FT_9race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n\w9. %s\y\R%s^n",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8, racename[9], racexp9) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_8race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n^n\w9. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_5race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n^n\w6. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_4race")){ format(menu_msg,511,"\yWähle deine Rasse\RErfahrung^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\w5. Automatische Auswahl",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9),menu_msg,-1) } else client_print(id,print_chat,"[%s] ERROR, PLEASE CONTACT AN ADMIN, THIS MOD IS NOT CONFIGURED CORRECTLY",MOD) #else if(get_cvar_num("FT_9race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\ySelect Hero^n^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n\w9. %s\y\R%s^n",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8, racename[9], racexp9) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_8race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\ySelect Hero^n^n\w5. %s\y\R%s^n\w6. %s\y\R%s^n\w7. %s\y\R%s^n\w8. %s\y\R%s^n^n\w9. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5, racename[6], racexp6, racename[7], racexp7, racename[8], racexp8) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_5race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n^n\w6. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9),menu_msg,-1) } else if(get_cvar_num("FT_4race")){ format(menu_msg,511,"\ySelect Race\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n^n\w5. Auto-select",racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4) show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<9),menu_msg,-1) } else client_print(id,print_chat,"[%s] ERROR, PLEASE CONTACT AN ADMIN, THIS MOD IS NOT CONFIGURED CORRECTLY",MOD) #endif return PLUGIN_HANDLED } public shopmenu(id){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } new pos = 0 new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9) new menu_body[512] #if LANG_GER pos += format(menu_body[pos], 511-pos, "\yGegenstand kaufen\R$ Kosten^n^n") #else pos += format(menu_body[pos], 511-pos, "\yBuy Item\R$ Cost^n^n") #endif for (new i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s\y\R%d^n",i+1,itemname[i],itemcost[i]) } #if LANG_GER pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #endif #if LANG_FRE pos += format(menu_body[pos], 511-pos, "^n\w0. Sortir") #endif #if LANG_ENG pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public shopmenu2(id){ if (warcraft3==false) return PLUGIN_CONTINUE if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } new pos = 0 new keys = (1<<0|1<<1|1<<2|1<<3|1<<4|1<<5|1<<6|1<<7|1<<8|1<<9) new menu_body[512] #if LANG_GER pos += format(menu_body[pos], 511-pos, "\yGegenstand kaufen 2\R$ Kosten^n^n") #else pos += format(menu_body[pos], 511-pos, "\yBuy An Item\R$ Cost^n^n") #endif for (new i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s\y\R%d^n",i+1,itemname2[i],itemcost2[i]) } #if LANG_GER pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #endif #if LANG_FRE pos += format(menu_body[pos], 511-pos, "^n\w0. Sortir") #endif #if LANG_ENG pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public buy_item(id,key){ if (warcraft3==false) return PLUGIN_CONTINUE wc3_check_empty() if (wc3_empty_server==true){ client_print(id,print_center,"You may not buy items when you are alone on server.") return PLUGIN_CONTINUE } if(get_cvar_num("FT_competitive")){ if (!is_user_alive(id)){ client_print(id,print_center,"You may not buy items when you are dead.") return PLUGIN_HANDLED } else if(!buytime){ new Float:thetime = get_cvar_float("mp_buytime")*60.0 client_print(id,print_center,"%0.0f seconds have passed. You can't buy anthing now.",thetime) return PLUGIN_HANDLED } else if(!isBuyzone[id]){ client_print(id,print_center,"You must be in the buyzone to purchase an item") return PLUGIN_HANDLED } } if (!is_user_alive(id) && (key==7 || key==6 || key==5 || key==4 || key==3 || key==2 || key==1)){ client_print(id,print_center,"You may not purchase that item when dead") return PLUGIN_CONTINUE } new usermoney = get_user_money(id) if (key==9) return PLUGIN_HANDLED else if(key==playeritem[id]-1 && key!=TOME-1){ client_print(id,print_center,"You already own that item") return PLUGIN_HANDLED } else if (usermoney1500) return PLUGIN_HANDLED new temp = bonus while(temp!=0){ bonus = 1 if (((p_skills[id][0] == 9 && race9Options[2] == 2) || p_skills[id][0] == 2) && p_skills[id][2]){ // Devotion Aura Regenerate if(playeritem[id]==HEALTH){ if (p_skills[id][2]-1==0 && get_user_health(id)<(p_devotion[0]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (p_skills[id][2]-1==1 && get_user_health(id)<(p_devotion[1]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (p_skills[id][2]-1==2 && get_user_health(id)<(p_devotion[2]+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) } else{ if (p_skills[id][2]-1==0 && get_user_health(id)(100+HEALTHBONUS)){ realhealth = get_user_health(id)-1024 if (playeritem[id]==HEALTH && realhealth<(100+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (realhealth<100) set_user_health(id, get_user_health(id)+bonus) } } else if (playeritem[id]==HEALTH && get_user_health(id)<(100+HEALTHBONUS)) set_user_health(id, get_user_health(id)+bonus) else if (get_user_health(id)<100) set_user_health(id, get_user_health(id)+bonus) temp-- } return PLUGIN_CONTINUE } public giveheifnothas(parm[2]) { new id = parm[0] new wpnList[32] = 0 new number = 0 new foundNade = false get_user_weapons(id,wpnList,number) for (new i = 0;i < number && !foundNade;i++) { if (wpnList[i] == CSW_HEGRENADE) foundNade = true } if (!foundNade && is_user_alive(id)) { set_hudmessage(0, 100, 0, 0.05, 0.65, 2, 0.02, 10.0, 0.01, 0.1, 2) #if LANG_GER show_hudmessage(id,"Viel Spass mit der Granate!") #endif #if LANG_FRE show_hudmessage(id,"Recevez une grenade!") #endif #if LANG_ENG show_hudmessage(id,"Enjoy a nade!") #endif give_item(id,"weapon_hegrenade") } justgivennade[id]=false return PLUGIN_CONTINUE } public WC3_Menu(id){ if (warcraft3==false) return PLUGIN_CONTINUE new pos = 0, i, menu_body[512], menu_items[6][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9) menu_items[0]= "Skills Menu" menu_items[1]= "Race Menu" menu_items[2]= "Item Menu" menu_items[3]= "Initiate War3FT vote" menu_items[4]= "Help" menu_items[5]= "Admin Menu" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<6; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_wc3menu(id,key){ switch (key){ case 0: skills_menu(id) case 1: race_menu(id) case 2: item_menu(id) case 3: war3_vote(id,1) case 4: war3_info(id,1) case 5: admin_menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } skills_menu(id){ new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<8)|(1<<9) menu_items[0]= "Select Skills" menu_items[1]= "Skills Information" menu_items[2]= "Reselect Skills" pos += format(menu_body[pos], 511-pos, "\ySkills Options^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_skillsmenu(id,key){ switch (key){ case 0: select_skill(id,1) case 1: skills_info(id,1) case 2: resetskills(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } race_menu(id){ new pos = 0, i, menu_body[512], menu_items[4][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)|(1<<9) menu_items[0]= "Change Race" menu_items[1]= "Show Level" menu_items[2]= "Reset XP to 0" menu_items[3]= "Show Player Skills" pos += format(menu_body[pos], 511-pos, "\yRace Options^n^n") for (i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_racemenu(id,key){ switch (key){ case 0: change_race(id,1) case 1: displaylevel(id,0) case 2: amx_resetxp(id,1) case 3: player_skills(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } item_menu(id){ new pos = 0, i, menu_body[512], menu_items[4][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<8)|(1<<9) menu_items[0]= "Shopmenu 1" menu_items[1]= "Shopmenu 2" menu_items[2]= "Show Shopmenu Information" menu_items[3]= "Show Shopmenu 2 Information" pos += format(menu_body[pos], 511-pos, "\yItem Options^n^n") for (i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_itemmenu(id,key){ switch (key){ case 0: shopmenu(id) case 1: shopmenu2(id) case 2: items_info(id,1) case 3: items_info2(id,1) case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } // Code taken from plmenu.sma (default AMX file) new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_menuOption[33] new g_menuSettings[33] admin_menu(id){ if (!(get_user_flags(id)&ADMIN_LEVEL_WC3)) { if(id != 0){ client_print(id,print_center,"You have no access to that command") return PLUGIN_HANDLED } } new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<8)|(1<<9) menu_items[0]= "Give Individual Players XP" menu_items[1]= "Give Multiple Players XP" menu_items[2]= "Save everyone's XP" pos += format(menu_body[pos], 511-pos, "\yAdmin Menu^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_adminmenu(id,key){ switch (key){ case 0:{ g_menuOption[id] = 1 g_menuSettings[id] = 50 playerxp_menu(id,g_menuPosition[id] = 0) } case 1:{ g_menuOption[id] = 1 g_menuSettings[id] = 50 teamxp_menu(id) } case 2: server_cmd("amx_savexp @ALL") case 8: WC3_Menu(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } playerxp_menu(id,pos){ if (pos < 0){ admin_menu(id) return PLUGIN_CONTINUE } get_players(g_menuPlayers[id],g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32], team[4] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody,511, "\yGive Players XP\R%d/%d^n\w^n",pos+1,(g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0 ))) new end = start + 7 new keys = (1<<9)|(1<<7) if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for(new a = start; a < end; ++a){ i = g_menuPlayers[id][a] get_user_name(i,name,31) get_user_team(i,team,3) keys |= (1<6){ g_menuOption[id]=1 } switch(g_menuOption[id]){ case 1: g_menuSettings[id] = 50 case 2: g_menuSettings[id] = 100 case 3: g_menuSettings[id] = 500 case 4: g_menuSettings[id] = 1000 case 5: g_menuSettings[id] = 5000 case 6: g_menuSettings[id] = 10000 } playerxp_menu(id,g_menuPosition[id]) } case 8: playerxp_menu(id,++g_menuPosition[id]) case 9: playerxp_menu(id,--g_menuPosition[id]) default:{ new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] client_print(player,print_chat,"[%s] The admin just awarded you %d experience.",MOD,g_menuSettings[id]) playerxp[player]+=g_menuSettings[id] displaylevel(player,1) playerxp_menu(id,g_menuPosition[id]) } } return PLUGIN_HANDLED } teamxp_menu(id){ new pos = 0, i, menu_body[512], menu_items[3][32] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<7)|(1<<8)|(1<<9) menu_items[0]= "Terrorist" menu_items[1]= "Counter-Terrorists" menu_items[2]= "Everyone" pos += format(menu_body[pos], 511-pos, "\yTeam XP Menu^n^n") for (i = 0; i<3; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos,"^n8. Give %d XP^n",g_menuSettings[id]) pos += format(menu_body[pos], 511-pos, "^n^n\w9. Back") pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) return PLUGIN_CONTINUE } public do_teamxpmenu(id,key) { switch(key){ case 0:{ server_cmd("amx_givexp @TERRORIST %d",g_menuSettings[id]) teamxp_menu(id) } case 1:{ server_cmd("amx_givexp @CT %d",g_menuSettings[id]) teamxp_menu(id) } case 2:{ server_cmd("amx_givexp @ALL %d",g_menuSettings[id]) teamxp_menu(id) } case 7:{ ++g_menuOption[id] if (g_menuOption[id]>6){ g_menuOption[id]=1 } switch(g_menuOption[id]){ case 1: g_menuSettings[id] = 50 case 2: g_menuSettings[id] = 100 case 3: g_menuSettings[id] = 500 case 4: g_menuSettings[id] = 1000 case 5: g_menuSettings[id] = 5000 case 6: g_menuSettings[id] = 10000 } teamxp_menu(id) } case 8: admin_menu(id) case 9: return PLUGIN_HANDLED default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } /*public WC3_Menu3(id){ if (warcraft3==false) return PLUGIN_CONTINUE new pos = 0, i new menu_body[512] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) new menu_items[9][32] #if LANG_GER if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ menu_items[0]= "Wechsle deine Rasse" menu_items[1]= "Einkaufs Menu" menu_items[2]= "Fertigkeiten auswählen" menu_items[3]= "Anzeige deines Levels" menu_items[4]= "Spieler Fertigkeiten" menu_items[5]= "Fertigkeitsinformationen" menu_items[6]= "Gegenstandsinformationen" menu_items[7]= "War3 Hilfe" menu_items[8]= "Fertigkeiten neu einstellen " pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 XP Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") show_menu(id,keys,menu_body,-1) } else{ menu_items[0]= "Wechsle deine Rasse" menu_items[1]= "Einkaufs Menu" menu_items[2]= "Einkaufs Menu 2" menu_items[3]= "Anzeige deines Levels" menu_items[4]= "Spieler Fertigkeiten" menu_items[5]= "Fertigkeitsinformationen" menu_items[6]= "Gegenstandsinformationen" menu_items[7]= "Gegenstandsinformationen 2" menu_items[8]= "Mehr" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") show_menu(id,keys,menu_body,-1) } #else if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ menu_items[0]= "Change Race" menu_items[1]= "Shop Menu" menu_items[2]= "Select Skills" menu_items[3]= "Show Level" menu_items[4]= "Player Skills" menu_items[5]= "Skills Info" menu_items[6]= "Items Info" menu_items[7]= "War3 Help" menu_items[8]= "Reset Skills" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 XP Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) } else{ menu_items[0]= "Change Race" menu_items[1]= "Shop Menu" menu_items[2]= "Shop Menu 2" menu_items[3]= "Show Level" menu_items[4]= "Player Skills" menu_items[5]= "Skills Info" menu_items[6]= "Items Info" menu_items[7]= "Items Info 2" menu_items[8]= "More" pos += format(menu_body[pos], 511-pos, "\yWarcraft 3 Frozen Throne Menu^n^n") for (i = 0; i<9; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") show_menu(id,keys,menu_body,-1) } #endif return PLUGIN_HANDLED } public do_wc3menu3(id,key){ if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")){ switch (key){ case 0: change_race(id) case 1: shopmenu(id) case 2: select_skill(id,1) case 3: say_level(id) case 4: player_skills(id,1) case 5: skills_info(id,1) case 6: items_info(id,1) case 7: war3_info(id,1) case 8: resetskills(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } else{ switch (key){ case 0: change_race(id) case 1: shopmenu(id) case 2: shopmenu2(id) case 3: say_level(id) case 4: player_skills(id,1) case 5: skills_info(id,1) case 6: items_info(id,1) case 7: items_info2(id,1) case 8: WC3_menu2(id) case 9: WC3_menu2(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } return PLUGIN_HANDLED } public WC3_menu2(id){ new pos = 0 new menu_body[512] new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) #if LANG_GER new menu_items[9][] = {"War3 Hilfe","Fertigkeiten neu einstellen","Fertigkeiten auswählen","Zurueck","","","","",""} #else new menu_items[9][] = {"War3 Help","Reset Skills","Select Skills","Back","","","","",""} #endif pos += format(menu_body[pos], 511-pos, "\yWar3 Menu (cont)^n^n") for (new i = 0; i<4; i++){ pos += format(menu_body[pos], 511-pos, "\w%d. %s^n",i+1,menu_items[i]) } #if LANG_GER pos += format(menu_body[pos], 511-pos, "^n\w0. Schliessen") #else pos += format(menu_body[pos], 511-pos, "^n\w0. Exit") #endif show_menu(id,keys,menu_body,-1) return PLUGIN_HANDLED } public do_wc3menu2(id,key){ switch (key){ case 0: war3_info(id,1) case 1: resetskills(id) case 2: select_skill(id,1) case 3: WC3_Menu(id) default: return PLUGIN_HANDLED } if (file_exists("sound/warcraft3/pickupitem.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/pickupitem.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) return PLUGIN_HANDLED } */ public plugin_precache() { g_sModelIndexFireball = precache_model("sprites/zerogxplode.spr") g_sModelIndexSmoke = precache_model("sprites/steam1.spr") m_iSpriteTexture = precache_model( "sprites/shockwave.spr") flaresprite = precache_model( "sprites/blueflare2.spr") iBeam4 = precache_model("sprites/zbeam4.spr") m_iTrail = precache_model("sprites/smoke.spr") lightning = precache_model("sprites/lgtning.spr") shadow = precache_model("sprites/animglow01.spr") grunt = precache_model("sprites/agrunt1.spr") snow = precache_model("sprites/snow.spr") fire = precache_model("sprites/explode1.spr") burning = precache_model("sprites/xfire.spr") if (file_exists("models/player/goomba/goomba.mdl")) precache_model("models/player/goomba/goomba.mdl") //NeKo Sprite Modification race_1 = precache_model("sprites/warcraft3/races/wc3_undead_01.spr") race_2 = precache_model("sprites/warcraft3/races/wc3_human_01.spr") race_3 = precache_model("sprites/warcraft3/races/wc3_orc_01.spr") race_4 = precache_model("sprites/warcraft3/races/wc3_elves_01.spr") race_5 = precache_model("sprites/warcraft3/races/wc3_bloodmage_01.spr") race_6 = precache_model("sprites/warcraft3/races/wc3_shadow_01.spr") race_7 = precache_model("sprites/warcraft3/races/wc3_warden_01.spr") race_8 = precache_model("sprites/warcraft3/races/wc3_cryptlord_01.spr") race_9 = precache_model("sprites/warcraft3/races/wc3_chameleon_01.spr") race_0 = precache_model("sprites/warcraft3/races/wc3_none_01.spr") level_1 = precache_model("sprites/warcraft3/level/a_level_1.spr") level_2 = precache_model("sprites/warcraft3/level/a_level_2.spr") level_3 = precache_model("sprites/warcraft3/level/a_level_3.spr") level_4 = precache_model("sprites/warcraft3/level/a_level_4.spr") level_5 = precache_model("sprites/warcraft3/level/a_level_5.spr") level_6 = precache_model("sprites/warcraft3/level/a_level_6.spr") level_7 = precache_model("sprites/warcraft3/level/a_level_7.spr") level_8 = precache_model("sprites/warcraft3/level/a_level_8.spr") level_9 = precache_model("sprites/warcraft3/level/a_level_9.spr") level_0 = precache_model("sprites/warcraft3/level/a_level_0.spr") level_10 = precache_model("sprites/warcraft3/level/a_level_10.spr") //blood sprites spr_blood_spray = precache_model("sprites/bloodspray.spr") spr_blood_drop = precache_model("sprites/blood.spr") /* ankh = precache_model("sprites/warcraft3/items/wc3_ankh_01.spr") boots = precache_model("sprites/warcraft3/items/wc3_boot_01.spr") cat = precache_model("sprites/warcraft3/items/wc3_cat_01.spr") chameleon = precache_model("sprites/warcraft3/items/wc3_chameleon_01.spr") claws = precache_model("sprites/warcraft3/items/wc3_claws_01.spr") cloak = precache_model("sprites/warcraft3/items/wc3_cloak_01.spr") feather = precache_model("sprites/warcraft3/items/wc3_feather_01.spr") frost = precache_model("sprites/warcraft3/items/wc3_frost_01.spr") healthitem = precache_model("sprites/warcraft3/items/wc3_health_01.spr") helm = precache_model("sprites/warcraft3/items/wc3_helm_01.spr") immunity = precache_model("sprites/warcraft3/items/wc3_immunity_01.spr") inferno = precache_model("sprites/warcraft3/items/wc3_inferno_01.spr") mask = precache_model("sprites/warcraft3/items/wc3_mask_01.spr") mole = precache_model("sprites/warcraft3/items/wc3_mole_01.spr") protectant = precache_model("sprites/warcraft3/items/wc3_protectant_01.spr") regen = precache_model("sprites/warcraft3/items/wc3_regen_01.spr") respawn = precache_model("sprites/warcraft3/items/wc3_respawn_01.spr") tome = precache_model("sprites/warcraft3/items/wc3_tome_01.spr") */ precache_sound("ambience/particle_suck1.wav") precache_sound("turret/tu_ping.wav") precache_sound("weapons/cbar_hitbod3.wav") if (file_exists("sound/warcraft3/banishcaster.wav")) precache_sound("warcraft3/banishcaster.wav") if (file_exists("sound/warcraft3/antend.wav")) precache_sound("warcraft3/antend.wav") if (file_exists("sound/warcraft3/tomes.wav")) precache_sound("warcraft3/tomes.wav") if (file_exists("sound/warcraft3/locustswarmloopwav.wav")) precache_sound("warcraft3/locustswarmloopwav.wav") if (file_exists("sound/warcraft3/impalelaunch1.wav")) precache_sound("warcraft3/impalelaunch1.wav") if (file_exists("sound/warcraft3/shadowstrikemissile1.wav")) precache_sound("warcraft3/shadowstrikemissile1.wav") if (file_exists("sound/warcraft3/locustswarmloop.wav")) precache_sound("warcraft3/locustswarmloop.wav") if(file_exists("sound/warcraft3/soundpack/reincarnation.wav")) precache_sound("warcraft3/soundpack/reincarnation.wav") if(file_exists("sound/warcraft3/shadowstrikebirth1.wav")) precache_sound("warcraft3/shadowstrikebirth1.wav") if(file_exists("sound/warcraft3/carrionswarmdamage1.wav")) precache_sound("warcraft3/carrionswarmdamage1.wav") if(file_exists("sound/warcraft3/carrionswarmlaunch1.wav")) precache_sound("warcraft3/carrionswarmlaunch1.wav") if(file_exists("sound/warcraft3/impalehit.wav")) precache_sound("warcraft3/impalehit.wav") if(file_exists("sound/warcraft3/divineshield.wav")) precache_sound("warcraft3/divineshield.wav") if (file_exists("sound/warcraft3/flamestriketargetwavenonloop1.wav")) precache_sound("warcraft3/flamestriketargetwavenonloop1.wav") if (file_exists("sound/warcraft3/entanglingrootstarget1.wav")) precache_sound("warcraft3/entanglingrootstarget1.wav") else{ precache_sound("weapons/electro5.wav") precache_sound("weapons/cbar_hitbod3.wav") } if (file_exists("sound/warcraft3/levelupcaster.wav")) precache_sound("warcraft3/levelupcaster.wav") else precache_sound("plats/elevbell1.wav") if (file_exists("sound/warcraft3/lightningbolt.wav")) precache_sound("warcraft3/lightningbolt.wav") else precache_sound("weapons/gauss2.wav") if (file_exists("sound/warcraft3/massteleporttarget.wav")) precache_sound("warcraft3/massteleporttarget.wav") else precache_sound("x/x_shoot1.wav") if (file_exists("sound/warcraft3/blinkarrival.wav")) precache_sound("warcraft3/blinkarrival.wav") else precache_sound("x/x_shoot1.wav") if (file_exists("sound/warcraft3/pickupitem.wav")) precache_sound("warcraft3/pickupitem.wav") return PLUGIN_CONTINUE } public showRank(id) { if((!get_cvar_num("FT_spec_info") && !g_specMode[id]) || !warcraft3) return PLUGIN_CONTINUE new a = read_data(2) if (!is_user_connected(a)) return PLUGIN_CONTINUE // not valid target new name[32] get_user_name( a ,name,31) new temp[512] new message[1048] #if CSSTATS_ENABLED new data[8], data2[8] new pos = get_user_stats( a ,data,data2) #if LANG_FRE format(temp,511,"Classement %d sur %d^n",pos,get_statsnum()) #else format(temp,511,"Rank is %d of %d^n",pos,get_statsnum()) #endif add(message,1047,temp) #endif if (playerxp[a]<0) playerxp[a]=0 for (new i=0; i<=10; ++i){ if (playerxp[a]>=xplevel[i]) p_level[a]=i else break } if (p_level[a]==0) format(temp,511,"%s XP: %d/%d",shortracename[p_skills[a][0]],playerxp[a],xplevel[p_level[a]+1]) else if (p_level[a]<10) #if LANG_FRE format(temp,511,"%s Niveau %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],playerxp[a],xplevel[p_level[a]+1]) #else format(temp,511,"%s Level %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],playerxp[a],xplevel[p_level[a]+1]) #endif else #if LANG_FRE format(temp,511,"%s Niveau %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],xplevel[10],xplevel[10]) #else format(temp,511,"%s Level %d XP: %d/%d",shortracename[p_skills[a][0]],p_level[a],xplevel[10],xplevel[10]) #endif add(message,1047,temp) if (playeritem[a]!=0 && (playeritem2[a]!=0 && playeritem2[a]!=MOLE)){ #if LANG_FRE new _and[]="et" #else new _and[]="and" #endif /* if (playeritem2[a]==REGEN) format(temp,511," %s %s %s x%d",playeritem[a]?itemname[playeritem[a]-1]:"",_and,playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511," %s %s %s",playeritem[a]?itemname[playeritem[a]-1]:"",_and,playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else if (playeritem[a]==0 && (playeritem2[a]!=0 && playeritem2[a]!=MOLE)){ if (playeritem2[a]==REGEN) format(temp,511," %s x%d",playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511," %s",playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else format(temp,511," ") */ //Change 10/07/2004 if (playeritem2[a]==REGEN) format(temp,511,"^n%s %s %s x%d",playeritem[a]?itemname[playeritem[a]-1]:"",_and,playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511,"^n%s %s %s",playeritem[a]?itemname[playeritem[a]-1]:"",_and,playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else if (playeritem[a]==0 && (playeritem2[a]!=0 && playeritem2[a]!=MOLE)){ if (playeritem2[a]==REGEN) format(temp,511,"^n%s x%d",playeritem2[a]?itemname2[playeritem2[a]-1]:"",rings[a]) else format(temp,511,"^n%s",playeritem2[a]?itemname2[playeritem2[a]-1]:"") } else format(temp,511,"^n") //End Change new thehealth = get_user_health(a) add(message,1047,temp) if (thehealth>500) thehealth-=1024 #if LANG_FRE format(temp,511,"^nPoint de Vie: %d^nArmure: %d",thehealth,get_user_armor(a)) #else format(temp,511,"^nCurrent Health: %d^nArmor: %d",thehealth,get_user_armor(a)) #endif add(message,1047,temp) if(get_cvar_num("FT_position")==0) set_hudmessage(255,255,255,0.018,0.9,2, 1.5, 12.0, 0.02, 5.0, 1) else set_hudmessage(255,255,255,0.65,0.9,2, 1.5, 12.0, 0.02, 5.0, 1) show_hudmessage(id,message) return PLUGIN_CONTINUE } public setSpecMode(id) { new arg[12] read_data( 2 , arg , 11 ) g_specMode[ id ] = ( arg[10] == '2' ) ? true : false } fire_flamethrower(id){ emit_sound(id, CHAN_WEAPON, "warcraft3/flamestriketargetwavenonloop1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new vec[3] new aimvec[3] new velocityvec[3] new length new speed = 10 get_user_origin(id,vec) get_user_origin(id,aimvec,2) new dist = get_distance(vec,aimvec) if (flame_count[id]==1){ new parm[1] parm[0]=id set_task(get_cvar_float("FT_flamestrike_cooldown"),"cooldown",500+id,parm,1) } new speed1 = 160 new speed2 = 350 new radius = 105 if(dist < 50){ radius = 0 speed = 5 } else if(dist < 150){ speed1 = speed2 = 1 speed = 5 radius = 50 } else if(dist < 200){ speed1 = speed2 = 1 speed = 5 radius = 90 } else if(dist < 250){ speed1 = speed2 = 90 speed = 6 radius = 90 } else if(dist < 300){ speed1 = speed2 = 140 speed = 7 } else if(dist < 350){ speed1 = speed2 = 190 speed = 7 } else if(dist < 400){ speed1 = 150 speed2 = 240 speed = 8 } else if(dist < 450){ speed1 = 150 speed2 = 290 speed = 8 } else if(dist < 500){ speed1 = 180 speed2 = 340 speed = 9 } velocityvec[0]=aimvec[0]-vec[0] velocityvec[1]=aimvec[1]-vec[1] velocityvec[2]=aimvec[2]-vec[2] length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2]) velocityvec[0]=velocityvec[0]*speed/length velocityvec[1]=velocityvec[1]*speed/length velocityvec[2]=velocityvec[2]*speed/length new args[8] args[0] = vec[0] args[1] = vec[1] args[2] = vec[2] args[3] = velocityvec[0] args[4] = velocityvec[1] args[5] = velocityvec[2] set_task(0.1,"te_spray",0,args,8,"a",2) check_burnzone(id,vec,aimvec,speed1,speed2,radius) } public te_spray(args[]){ //TE_SPRAY message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte (120) // Throws a shower of sprites or models write_coord(args[0]) // start pos write_coord(args[1]) write_coord(args[2]) write_coord(args[3]) // velocity write_coord(args[4]) write_coord(args[5]) write_short (fire) // spr write_byte (8) // count write_byte (70) // speed write_byte (100) //(noise) write_byte (5) // (rendermode) message_end() return PLUGIN_CONTINUE } check_burnzone(id,vec[],aimvec[],speed1,speed2,radius){ new maxplayers = get_maxplayers()+1 new tbody,tid get_user_aiming(id,tid,tbody,550) if((tid > 0) && (tid < maxplayers)){ if(cvar_exists("mp_friendlyfire")){ new ffcvar = get_cvar_num("mp_friendlyfire") if( (ffcvar == 0) || (ffcvar == 1)){ if(get_user_team(tid) != get_user_team(id)) burn_victim(tid,id,0) }else{ if(get_user_team(tid) == get_user_team(id)) burn_victim(tid,id,1) else burn_victim(tid,id,0) } }else{ burn_victim(tid,id,0) } } new burnvec1[3],burnvec2[3],length1 burnvec1[0]=aimvec[0]-vec[0] burnvec1[1]=aimvec[1]-vec[1] burnvec1[2]=aimvec[2]-vec[2] length1=sqrt(burnvec1[0]*burnvec1[0]+burnvec1[1]*burnvec1[1]+burnvec1[2]*burnvec1[2]) burnvec2[0]=burnvec1[0]*speed2/length1 burnvec2[1]=burnvec1[1]*speed2/length1 burnvec2[2]=burnvec1[2]*speed2/length1 burnvec1[0]=burnvec1[0]*speed1/length1 burnvec1[1]=burnvec1[1]*speed1/length1 burnvec1[2]=burnvec1[2]*speed1/length1 burnvec1[0] += vec[0] burnvec1[1] += vec[1] burnvec1[2] += vec[2] burnvec2[0] += vec[0] burnvec2[1] += vec[1] burnvec2[2] += vec[2] new origin[3] for (new i=1; i<=maxplayers; i++) { if(cvar_exists("mp_friendlyfire")){ new ffcvar = get_cvar_num("mp_friendlyfire") if( (ffcvar == 0) || (ffcvar == 1) ){ if(get_user_team(i) != get_user_team(id)){ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } }else{ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_user_team(i) == get_user_team(id)){ if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,1) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,1) }else{ if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } } }else{ if((is_user_alive(i) == 1) && (i != id)){ get_user_origin(i,origin) if(get_distance(origin,burnvec1) < radius) burn_victim(i,id,0) else if(get_distance(origin,burnvec2) < radius) burn_victim(i,id,0) } } } return PLUGIN_CONTINUE } burn_victim(id,killer,tk){ if(isburning[id] == 1) return PLUGIN_CONTINUE if (playeritem[id]==IMMUNITY || hasblink[id]) return PLUGIN_CONTINUE isburning[id] = 1 new hp,args[4] hp = get_user_health(id) if(hp > 250) hp = 250 args[0] = id args[1] = killer args[2] = tk set_task(0.3,"on_fire",451,args,4,"a",hp / 10) return PLUGIN_CONTINUE } public on_fire(args[]){ // new hp new rx,ry,rz,forigin[3] new id = args[0] new killer = args[1] if(isburning[id] == 0) return PLUGIN_CONTINUE rx = random_num(-30,30) ry = random_num(-30,30) rz = random_num(-30,30) get_user_origin(id,forigin) //TE_SPRITE - additive sprite, plays 1 cycle message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 17 ) write_coord(forigin[0]+rx) // coord, coord, coord (position) write_coord(forigin[1]+ry) write_coord(forigin[2]+10+rz) write_short( burning ) // short (sprite index) write_byte( 30 ) // byte (scale in 0.1's) write_byte( 200 ) // byte (brightness) message_end() //Smoke message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 5 ) write_coord(forigin[0]+(rx*2)) // coord, coord, coord (position) write_coord(forigin[1]+(ry*2)) write_coord(forigin[2]+100+(rz*2)) write_short( g_sModelIndexSmoke )// short (sprite index) write_byte( 60 ) // byte (scale in 0.1's) write_byte( 15 ) // byte (framerate) message_end() if(is_user_alive(id) == 0) return PLUGIN_CONTINUE do_damage(id,killer, 10,13, 3, 0, 0, 0) return PLUGIN_CONTINUE } public healitnow(parm[2]){ new id = parm[0] if (!endround && is_user_alive(id) && p_skills[id][1] && ((p_skills[id][0] == 9 && race9Options[1] == 6) || p_skills[id][0] == 6)) set_task(p_heal[p_skills[id][1]-1],"healitnow",id+90,parm,2) healingnext(parm) return PLUGIN_CONTINUE } public healingnext(parm[2]){ // Healing Wave new id=parm[0] new origin[3] get_user_origin(id, origin) new players[32] new numberofplayers new teamname[32] get_user_team(id, teamname, 31) get_players(players, numberofplayers,"ae",teamname) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] new heal = 1 new closestid = 0 for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (get_user_team(id)==get_user_team(targetid) && is_user_alive(targetid)){ get_user_origin(targetid,targetorigin) distancebetween=get_distance(origin,targetorigin) if (distancebetween < get_cvar_num("FT_healing_range") && !healinghit[targetid]) closestid = targetid } } if (closestid){ healingeffect(id,closestid,heal) parm[0]=targetid parm[1]=heal set_task(0.2,"healingnext",27,parm,2) } else{ for (i = 0; i < numberofplayers; ++i){ targetid=players[i] healinghit[targetid]=false } } return PLUGIN_CONTINUE } public healingeffect(id,targetid,heal){ healinghit[targetid]=true new realhealth if (!is_user_alive(targetid)) return PLUGIN_HANDLED // if(hasgodmode[id]) // return PLUGIN_CONTINUE if (((p_skills[targetid][0] == 9 && race9Options[2] == 2) || p_skills[targetid][0] == 2) && p_skills[targetid][2]){ // Devotion Aura if(playeritem[targetid]==HEALTH){ if (p_skills[targetid][2]-1==0 && get_user_health(targetid)<(p_devotion[0]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (p_skills[targetid][2]-1==1 && get_user_health(targetid)<(p_devotion[1]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (p_skills[targetid][2]-1==2 && get_user_health(targetid)<(p_devotion[2]+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) } else{ if (p_skills[targetid][2]-1==0 && get_user_health(targetid)115){ realhealth = get_user_health(targetid)-1024 if (playeritem[targetid]==HEALTH && realhealth<(100+HEALTHBONUS)) set_user_health(targetid, get_user_health(targetid)+heal) else if (realhealth<100) set_user_health(targetid, get_user_health(targetid)+heal) } } else if (playeritem[targetid]==HEALTH && get_user_health(targetid)<(100+HEALTHBONUS)) // HEALTHBONUS set_user_health(targetid, get_user_health(targetid)+heal) else if (get_user_health(targetid)<100) set_user_health(targetid, get_user_health(targetid)+heal) new origin[3] get_user_origin(targetid,origin) if(playeritem[targetid]!=CLOAK && (((p_skills[targetid][0] == 9 && race9Options[1] != 2) || p_skills[targetid][0] != 2) && !p_skills[targetid][1])){ message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_IMPLOSION ); write_coord(origin[0]) // initial position write_coord(origin[1]) // initial position write_coord(origin[2]) // initial position write_byte(100) // radius write_byte( 8 ); // count write_byte( 1 ); // life message_end(); } return PLUGIN_CONTINUE } public lightpls(parm[6]){ new id = parm[5] if (!is_user_alive(id)) return PLUGIN_CONTINUE new origin[3], damage origin[0]=parm[0] origin[1]=parm[1] origin[2]=parm[2] message_begin( MSG_BROADCAST,SVC_TEMPENTITY) write_byte( 0 ) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]+600) write_coord(origin[0]) write_coord(origin[1]) write_coord(origin[2]-600) write_short( lightning ) write_byte( 1 ) // framestart write_byte( 5 ) // framerate write_byte( 2 ) // life write_byte( 500 ) // width write_byte( 20 ) // noise if(serpentteam[id]==1){ write_byte( 255 ) // r write_byte( 0 ) // g write_byte( 0 ) // b } else{ write_byte( 0 ) // r write_byte( 0 ) // g write_byte( 255 ) // b } write_byte( 100 ) // brightness write_byte( 100 ) // speed message_end() new players[32] new numberofplayers get_players(players, numberofplayers) new i new targetid = 0 new distancebetween = 0 new targetorigin[3] for (i = 0; i < numberofplayers; ++i){ targetid=players[i] if (serpentteam[id]!=get_user_team(targetid) &&is_user_alive(targetid)){ get_user_origin(targetid,targetorigin) distancebetween=sqrt((origin[1]-targetorigin[1])*(origin[1]-targetorigin[1])+(origin[0]-targetorigin[0])*(origin[0]-targetorigin[0])) if ((distancebetween < 85)){ damage = 10 do_damage(targetid,id, damage,14, 3, 0, 0, 0) client_cmd(targetid, "spk ambience/thunder_clap.wav") message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 255 ) // fade green write_byte( 255 ) // fade blue write_byte( iglow[id][3] ) // fade alpha message_end() if (iglow[id][0] < 1){ new parm2[2] parm2[0]=id set_task(0.01,"glow_change",8,parm2,2) } iglow[id][0] += 3*damage iglow[id][1] = 0 iglow[id][2] = 0 iglow[id][3] = 0 if (iglow[id][0]>MAXGLOW) iglow[id][0]=MAXGLOW message_begin(MSG_ONE,gmsgFade,{0,0,0},id) write_short( 1<<10 ) // fade lasts this long duration write_short( 1<<10 ) // fade lasts this long hold time write_short( 1<<12 ) // fade type (in / out) write_byte( 255 ) // fade red write_byte( 0 ) // fade green write_byte( 0 ) // fade blue write_byte( iglow[id][0] ) // fade alpha message_end() } } } if (!endround) set_task(0.45,"lightpls",43,parm,6) return PLUGIN_CONTINUE } public ability(id){ if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) return PLUGIN_CONTINUE if(is_user_alive(id)){ if (((p_skills[id][0] == 9 && race9Options[3] == 6) || p_skills[id][0] == 6) && serpents[id]>0 && !endround){ //Serpent Ward if (get_user_team(id)==1) //CT serpentteam[id]=1 else //T serpentteam[id]=2 new parm[6] new origin[3] get_user_origin(id,origin) parm[0]=origin[0] parm[1]=origin[1] parm[2]=origin[2] parm[5]=id lightpls(parm) set_hudmessage(200, 100, 0, 0.2, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 2) serpents[id]-- //show_hudmessage(id,"Serpent Ward Placed, %d remaining", serpents[id]) //Change 10/07/2004 #if LANG_FRE show_hudmessage(id,"Gardien Serpent place, %d restant", serpents[id]) #else show_hudmessage(id,"Serpent Ward Placed, %d remaining", serpents[id]) #endif //End Change } } return PLUGIN_HANDLED } public checkmap(){ //Prevents war3:FT to give pistols w/knife only maps new mapname[32] get_mapname(mapname,31) if (containi(mapname,"ka_")!=-1 || containi(mapname,"scoutzknivez")!=-1){ givepistol=false if (get_cvar_num("FT_no_gloves_on_ka")) givenade=false else givenade=true } else{ givenade=true givepistol=true } if(get_cvar_num("FT_no_orcnades")){ if (containi(mapname,"ka_")!=-1 || containi(mapname,"jail_riot")!=-1 || containi(mapname,"fy_")!=-1) no_he=true else no_he=false } return PLUGIN_CONTINUE } public hebuy(id){ if(get_cvar_num("mp_grenadeprotection")==0) return PLUGIN_CONTINUE if(!isBuyzone[id]) return PLUGIN_HANDLED if (he[id]>0){ //Change 10/07/2004 #if LANG_FRE client_print(id,print_center,"Seulement une HE par round") #else client_print(id,print_center,"Only one HE grenade per round") #endif //End Change return PLUGIN_HANDLED } else{ ++he[id] return PLUGIN_CONTINUE } return PLUGIN_HANDLED } public BuyZone(id) { if (read_data(1)) isBuyzone[id] = true else isBuyzone[id] = false return PLUGIN_CONTINUE } public check_for_living(){ // Function is used to save the weapons if someone died from the bomb exploding new players[32] new numberofplayers get_players(players, numberofplayers) new i, id for (i = 0; i < numberofplayers; ++i){ id = players[i] if(is_user_alive(id)){ alive_before_explosion[id]=true saveweapons(id) // Added in 1.6.7 diedlastround[id]=false } else{ // Added in 1.6.7 diedlastround[id] = true } } return PLUGIN_CONTINUE } // Player Events public event_player_action(){ new sArg[MAX_VAR_LENGTH], sAction[MAX_VAR_LENGTH] new sName[MAX_NAME_LENGTH] new id, iUserId if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED read_logargv(0,sArg,MAX_VAR_LENGTH) read_logargv(2,sAction,MAX_VAR_LENGTH) parse_loguser(sArg,sName,MAX_NAME_LENGTH,iUserId) id = find_player("k",iUserId) if(id==0) // Prevents the server from gaining XP return PLUGIN_CONTINUE // Bomb planted if (equal(sAction,"Planted_The_Bomb")) { new origin[3] new teamname[32] new player[32] new numplayers new targetorigin[3] new targetid get_user_origin(id, origin) get_user_team(id, teamname, 31) get_players(player, numplayers, "ae", teamname) bombCarrier = 0 set_task(get_cvar_num("mp_c4timer")-1.0,"check_for_living",645+id) // Used to help reincarnation after dying from bomb new temp temp = 3 * xpgiven[p_level[id]] playerxp[id]+= temp if (get_cvar_num("FT_objectives")) #if LANG_FRE client_print(id,print_chat, "[%s] %s recoit %d XP de bonus pour avoir pose la bombe personnellement.",MOD,sName,temp) #else client_print(id,print_chat, "[%s] %s recieved %d extra XP for personally planting the bomb.",MOD,sName,temp) #endif for (new i=0; i 32 || !is_user_alive(id) || gotShield[id] ) return PLUGIN_CONTINUE new modelName[32] Entvars_Get_String(entId, EV_SZ_model, modelName, 31) if ( containi(modelName,"w_shield.mdl") != -1 ) { new parm[1] parm[0] = id remove_task(2200 + id,0) set_task(0.1,"check_shield",2200 + id,parm,1) } return PLUGIN_CONTINUE } public check_shield(parm[1]) { new id = parm[0] new modelName[32] Entvars_Get_String(id, EV_SZ_viewmodel, modelName, 31) if ( containi(modelName,"v_shield_") != -1 ) gotShield[id]=true else gotShield[id]=false return PLUGIN_HANDLED } public shieldbuy(id){ if(get_user_money(id)>=2200) gotShield[id]=true new parm[1] set_task(0.1,"check_shield",2100 + id,parm,1) return PLUGIN_CONTINUE } public set_variables(){ BOMBPLANTXP = get_cvar_num("FT_bombplanterxp") DEFUSEXP = get_cvar_num("FT_defusexp") HOSTAGEXP = get_cvar_num("FT_hostagexp") KILLRESCUEMANXP = get_cvar_num("FT_killrescuemanxp") XPBONUS = get_cvar_num("FT_xpbonus") KILL_BOMB_CARRIER = get_cvar_num("FT_kill_bomb_carrier_bonus") HEADSHOT_BONUS = get_cvar_num("FT_headshot_bonus") DEFUSER_KILL_BONUS = get_cvar_num("FT_defuser_kill_bonus") VIP_ESCAPE_BONUS = get_cvar_num("FT_VIP_escape_bonus") ROUNDXP = get_cvar_num("FT_round_win_XP") // MOD SELECTION if(get_cvar_num("FT_5race") || get_cvar_num("FT_4race")) MOD = "WAR3" else if (get_cvar_num("FT_8race") || get_cvar_num("FT_9race")) MOD = "WAR3FT" else server_print("ERROR, INCORRECT NUMBER OF RACES ARE SELECTED") new temp = 0 if(get_cvar_num("FT_5race")) temp++ if(get_cvar_num("FT_4race")) temp++ if (get_cvar_num("FT_8race")) temp++ if (get_cvar_num("FT_9race")) temp++ if(temp>1){ server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") server_print("ERROR, YOU HAVE MORE THAN 1 RACE OPTION SELECTED IN YOUR WAR3FT.CFG FILE") } return PLUGIN_CONTINUE } public clear_all_icons(id){ new string [8][32] = {"dmg_rad","item_longjump","dmg_shock","item_healthkit","dmg_heat","suit_full","cross","dmg_gas"} for(new i=0;i<8;i++){ message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id ) write_byte( ICON_HIDE ) // status write_string( string[i] ) // sprite name write_byte( 0 ) // red write_byte( 0 ) // green write_byte( 0 ) // blue message_end() } } public icon_controller(id, value){ if (!get_cvar_num("FT_show_icons")) return PLUGIN_HANDLED if(!p_skills[id][4]) return PLUGIN_HANDLED if(((p_skills[id][0] == 9 && race9Options[4] == 2) || p_skills[id][0] == 2) && p_skills[id][4] && blinkdelayed[id] && get_cvar_num("FT_blinkstartdisabled")) return PLUGIN_HANDLED if(freezetime) return PLUGIN_HANDLED if (u_delay) return PLUGIN_HANDLED new string[32], r, g, b switch(p_skills[id][0]){ // Color of the icons based on race case 1: format(string,31,"dmg_rad"),r=255,g=0,b=0 // Undead case 2: format(string,31,"item_longjump"),r=0,g=120,b=120 // Human case 3: format(string,31,"dmg_shock"),r=255, g=255, b=255 // Orc case 4: format(string,31,"item_healthkit"),r=0,g=0,b=255 // Night Elf case 5: format(string,31,"dmg_heat"),r=255, g=0, b=0 // Blood Mage case 6: format(string,31,"suit_full"), r=0, g=200, b=200 // Shadow Hunter case 7: format(string,31,"cross"), r=255, g=0, b=0 // Warden case 8: format(string,31,"dmg_gas"), r=0, g=255, b=0 // Crypt Lord case 9: // look at where race9 ultimate comes from and show that icon switch(race9Options[4]){ // Color of the icons based on race case 1: format(string,31,"dmg_rad"),r=255,g=0,b=0 // Undead case 2: format(string,31,"item_longjump"),r=0,g=120,b=120 // Human case 3: format(string,31,"dmg_shock"),r=255, g=255, b=255 // Orc case 4: format(string,31,"item_healthkit"),r=0,g=0,b=255 // Night Elf case 5: format(string,31,"dmg_heat"),r=255, g=0, b=0 // Blood Mage case 6: format(string,31,"suit_full"), r=0, g=200, b=200 // Shadow Hunter case 7: format(string,31,"cross"), r=255, g=0, b=0 // Warden case 8: format(string,31,"dmg_gas"), r=0, g=255, b=0 // Crypt Lord } } if(!is_user_alive(id)) // If the user is dead then hide the icon value = ICON_HIDE if(value==ICON_FLASH){ if(((p_skills[id][0] == 9 && race9Options[4] == 1) || p_skills[id][0] == 1)) r=255,g=255,b=255 } message_begin( MSG_ONE, gmsgIcon, {0,0,0}, id ) write_byte( value ) // status write_string( string ) // sprite name write_byte( r ) // red write_byte( g ) // green write_byte( b ) // blue message_end() return PLUGIN_CONTINUE } public hook_drop(id) { new parm[1] parm[0] = id remove_task(2300 + id,0) set_task(0.1,"check_shield2",2300 + id,parm,1) return PLUGIN_CONTINUE } public check_shield2(parm[1]) { new id = parm[0] new modelName[32] Entvars_Get_String(id, EV_SZ_viewmodel, modelName, 31) if ( containi(modelName,"v_shield_") != -1 ) gotShield[id]=true else gotShield[id]=false return PLUGIN_HANDLED } public amx_savexp(id, level, cid){ if (!(get_user_flags(id)&ADMIN_LEVEL_WC3)) { if(id != 0){ client_print(id,print_console,"[%s] You have no access to that command", MOD) return PLUGIN_HANDLED } } new arg[32], xp[10] read_argv(1,arg,31) read_argv(2,xp,9) if(equali(arg,"@ALL")){ new players[32], inum get_players(players,inum) for(new a=0;a1500) thehealth=thehealth-2048 else if (thehealth>500) thehealth = thehealth-1024 show_hudmessage(id,"%s -- %d HP / %d AP / %s",name,thehealth,get_user_armor(pid),wpnname[7]) } else { set_hudmessage(color1,50,color2,-1.0,0.60,1, 0.01, 3.0, 0.01, 0.01, 4) show_hudmessage(id,name) } } if (get_user_team(id)==get_user_team(pid) && (playeritem2[pid]==CHAMELEON || skinchanged[pid]) && is_user_alive(pid)){ #if LANG_FRE client_print(id,print_center,"NE TIRE PAS! Il est dans ton equipe.") #else client_print(id,print_center,"He's on your team, DON'T SHOOT") #endif if (file_exists("sound/warcraft3/antend.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/antend.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } } public setTeam(id) g_friend[id] = read_data(2) public Target_Bombed(){ new players[32], numberofplayers get_players(players, numberofplayers) new id, i, parm[1] for (i = 0; i < numberofplayers; ++i){ id=players[i] parm[0]=id set_task(0.1,"check_alive",2,parm,1) } } public T_win(){ if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED new players[32], numberofplayers,a get_players(players,numberofplayers,"e","TERRORIST") for (a = 0; a < numberofplayers; ++a){ new temp = (ROUNDXP+xpgiven[p_level[players[a]]]) if (get_cvar_num("FT_objectives")){ new sName[32] get_user_name(players[a],sName,31) #if LANG_FRE client_print(players[a],print_chat, "[%s] %s a recu %d XP pour avoir gagne le round",MOD,sName,temp) #else client_print(players[a],print_chat, "[%s] %s recieved %d XP for winning the round",MOD,sName,temp) #endif } playerxp[players[a]]+=temp displaylevel(players[a],1) } return PLUGIN_CONTINUE } public CT_win(){ if (warcraft3==false) return PLUGIN_CONTINUE new theplayers[32], CTnum, Tnum get_players(theplayers,CTnum,"e","CT") get_players(theplayers,Tnum,"e","TERRORIST") if((Tnum+CTnum)0 && CTnum>0){} else return PLUGIN_HANDLED new players[32], numberofplayers,a get_players(players,numberofplayers,"e","CT") for (a = 0; a < numberofplayers; ++a){ new temp = (ROUNDXP+xpgiven[p_level[players[a]]]) if (get_cvar_num("FT_objectives")){ new sName[32] get_user_name(players[a],sName,31) #if LANG_FRE client_print(players[a],print_chat, "[%s] %s a recu %d XP pour avoir gagne le round",MOD,sName,temp) #else client_print(players[a],print_chat, "[%s] %s recieved %d XP for winning the round",MOD,sName,temp) #endif } playerxp[players[a]]+=temp displaylevel(players[a],1) } return PLUGIN_CONTINUE } public check_alive(parm[]){ if (!warcraft3) return PLUGIN_CONTINUE new id = parm[0] if(alive_before_explosion[id] && !is_user_alive(id)){ diedlastround[id]=true alive_before_explosion[id]=false } return PLUGIN_CONTINUE } public calllocustfunction(id){ new parm[11] parm[7]=id new players[32], numberofplayers, i, player, possibility[33], count = 0 get_players(players, numberofplayers) for (i = 0; i < numberofplayers; ++i){ player=players[i] if(get_user_team(player)!=get_user_team(id) && is_user_alive(player) && !hasblink[player] && playeritem[player]!=IMMUNITY){ possibility[count]=player count++ } } if(count==0){ set_hudmessage(178, 14, 41, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 5) #if LANG_FRE show_hudmessage(id,"Aucune cible valide trouvee!") #else show_hudmessage(id,"No valid targets found!") #endif return PLUGIN_CONTINUE } while(parm[6]==0) // Prevents target from being the server parm[6]=possibility[random_num(0,count)] new origin[3], origin2[3] get_user_origin(id,origin) get_user_origin(parm[6],origin2) parm[0]=origin[0] parm[1]=origin[1] parm[2]=origin[2] ultimateused[id]=true if (file_exists("sound/warcraft3/locustswarmloopwav.wav")==1) emit_sound(id,CHAN_ITEM, "warcraft3/locustswarmloopwav.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) drawfunnels(parm) return PLUGIN_CONTINUE } public drawfunnels(parm[]){ new MULTIPLIER = 150 // the lower the number the faster it reaches the target new id = parm[6] new caster = parm[7] if(playeritem[id]==IMMUNITY || hasblink[id] || !is_user_alive(id)){ ultimateused[caster]=false icon_controller(caster,ICON_SHOW) return PLUGIN_HANDLED } new origin[3], funnel[3], name[32], name2[32] get_user_name(id,name,31) get_user_name(caster,name2,31) get_user_origin(id,origin) funnel[0]=parm[0] // Origin of the funnel funnel[1]=parm[1] funnel[2]=parm[2] icon_controller(caster,ICON_FLASH) message_begin( MSG_BROADCAST, SVC_TEMPENTITY ) write_byte( TE_LARGEFUNNEL ) write_coord(funnel[0]) // origin, x write_coord(funnel[1]) // origin, y write_coord(funnel[2]) // origin, z write_short(snow) // sprite (0 for none) write_short(0) // 0 for collapsing, 1 for sending outward message_end() new xdist = diff(origin[0],funnel[0]) new ydist = diff(origin[1],funnel[1]) new zdist = diff(origin[2],funnel[2]) if(diff(origin[0],(funnel[0]-MULTIPLIER)) 1) //more than 1 player on server wc3_empty_server = false // then we can buy else wc3_empty_server = true // then we can t buy } return PLUGIN_CONTINUE } public dropitem(id){ return PLUGIN_CONTINUE } public dropitem2(id){ return PLUGIN_CONTINUE } //Change 10/07/2004 //Blood Function public bloodcreature(id,color) { // Blood spray new maxBlood = 10 new vec1[3] static const couleur[6] = {0,251,210,148,178,8} static const blood_small[7] = {190,191,192,193,194,195,197} // none - human - elves - undead - orc get_user_origin(id,vec1) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_BLOODSPRITE) write_coord(vec1[0]+random_num(-20,20)) write_coord(vec1[1]+random_num(-20,20)) write_coord(vec1[2]+random_num(-20,20)) write_short(spr_blood_spray) write_short(spr_blood_drop) write_byte(couleur[color]) // color index write_byte(10) // size message_end() message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_BLOODSTREAM) write_coord(vec1[0]) write_coord(vec1[1]) write_coord(vec1[2]+10) write_coord(random_num(-100,100)) // x write_coord(random_num(-100,100)) // y write_coord(random_num(-10,10)) // z write_byte(couleur[color]) // color write_byte(random_num(50,100)) // speed message_end() for (new j = 0; j < maxBlood; j++) { message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_WORLDDECAL) write_coord(vec1[0]+random_num(-100,100)) write_coord(vec1[1]+random_num(-100,100)) write_coord(vec1[2]-36) write_byte(blood_small[random_num(0,6)]) // index message_end() } } //amx_wc3 command public amx_wc3_launch(id, level, cid) { if (!(get_user_flags(id)&ADMIN_LEVEL_WC3)) { if(id != 0){ client_print(id,print_console,"[%s] You have no access to that command", MOD) return PLUGIN_HANDLED } } new cmds[32] read_argv(1,cmds,31) set_hudmessage(200, 100, 0, -1.0, 0.3, 2, 1.5, 10.0, 0.02, 5.0,15) if (equal(cmds, "on" )) { set_cvar_num("FT_control",0) set_cvar_num("sv_warcraft3",1) #if LANG_FRE show_hudmessage(0,"%s (%s) est desormais actif",WC3NAME,WC3VERSION) #endif #if LANG_GER show_hudmessage(0,"%s (%s) ist aktiviert",WC3NAME,WC3VERSION) #endif #if LANG_ENG show_hudmessage(0,"%s (%s) is activated now",WC3NAME,WC3VERSION) #endif return PLUGIN_HANDLED } else if (equal(cmds, "off" )) { set_cvar_num("FT_control",0) set_cvar_num("sv_warcraft3",0) #if LANG_FRE show_hudmessage(0,"%s (%s) est desormais inactif",WC3NAME,WC3VERSION) #endif #if LANG_GER show_hudmessage(0,"%s (%s) is no longer active",WC3NAME,WC3VERSION) #endif #if LANG_ENG show_hudmessage(0,"%s (%s) is no longer active",WC3NAME,WC3VERSION) #endif return PLUGIN_HANDLED } else if (equal(cmds, "auto" )) { set_cvar_num("FT_control",1) #if LANG_FRE show_hudmessage(0,"%s (%s) est desormais en mode automatique",WC3NAME,WC3VERSION) #endif #if LANG_GER show_hudmessage(0,"%s (%s) is in automatic mode now",WC3NAME,WC3VERSION) #endif #if LANG_ENG show_hudmessage(0,"%s (%s) is in automatic mode now",WC3NAME,WC3VERSION) #endif return PLUGIN_HANDLED } else { client_print(id,print_console,"[%s] USAGE: amx_wc3 (auto = enable timecontrol)", MOD) return PLUGIN_HANDLED } return PLUGIN_HANDLED } //Controler new last_announce = -1 public FT_controller(){ remove_task(8888) //controler d'activation FT_control = get_cvar_num("FT_control") FT_start = get_cvar_num("FT_start") FT_stop = get_cvar_num("FT_stop") FT_message = get_cvar_num("FT_message") new stime[4],sminute[4] get_time("%M",sminute,3) get_time("%H",stime,3) new minutes = strtonum(sminute) new hours = strtonum(stime) new nextmap[32] get_cvar_string("amx_nextmap",nextmap,31) new timeleft = get_timeleft() set_hudmessage(50, 50, 200, 0.13, 0.01, 2, 1.5, 12.0, 0.02, 5.0,15) new bool:okidoki = false new message[128] if (FT_control) { if(FT_start > FT_stop) { if (((hours >= FT_start) && (hours > FT_stop)) || ((hours < FT_start) && (hours < FT_stop))) okidoki = true } if (FT_stop > FT_start) { if ((hours >= FT_start) && (hours < FT_stop)) okidoki = true } if (FT_start == FT_stop) okidoki = true if(okidoki) { set_cvar_num("sv_warcraft3",1) if (FT_start == FT_stop) format(message,127,"") else { #if LANG_FRE format(message,127,"de %dh a %dh",FT_start,FT_stop) #endif #if LANG_GER format(message,127,"zwischen %dh und %dh",FT_start,FT_stop) #endif #if LANG_ENG format(message,127,"between %dh and %dh",FT_start,FT_stop) #endif } } else { set_cvar_num("sv_warcraft3",0) format(message,127,"de %dh a %dh",FT_stop,FT_start) } if (!get_cvar_num("sv_warcraft3") && FT_message) { #if LANG_FRE show_hudmessage(0,"%s (%s)^nInactif %s^nIl est:%02d:%02d^nTemps Restant: %d:%02d (prochaine carte: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_GER show_hudmessage(0,"%s (%s)^nInaktiv %s^nDie Zeit ist:%02d:%02d^nZeit ueberich: %d:%02d (naechste Map: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_ENG show_hudmessage(0,"%s (%s)^nInactive %s^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif } if (get_cvar_num("sv_warcraft3") && FT_message) { #if LANG_FRE show_hudmessage(0,"%s (%s)^nActif %s^nIl est:%02d:%02d^nTemps Restant: %d:%02d (prochaine carte: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_GER show_hudmessage(0,"%s (%s)^nAktiv %s^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_ENG show_hudmessage(0,"%s (%s)^nActive %s^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,message,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif } set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 10.0, 0.1, 0.2, 17) if ((last_announce != minutes) && (hours == (FT_start - 1)) && ((minutes == 30) || (minutes == 45)|| (minutes == 55))) { last_announce = minutes #if LANG_FRE show_hudmessage(0,"Activation de %s dans %02d minutes^nVoici les Commandes de base^n/war3menu (aide) - /shopmenu - /shopmenu2 - /changerace",WC3NAME,60 - minutes) #endif #if LANG_GER show_hudmessage(0,"%s aktiv in %02d minuten^nThis is the Basic commands^n/war3menu (Hilfe) - /shopmenu - /shopmenu2 - /changerace",WC3NAME,60 - minutes) #endif #if LANG_ENG show_hudmessage(0,"%s is Activated in %02d minutes^nThese are the Basic commands^n/war3menu (help) - /shopmenu - /shopmenu2 - /changerace",WC3NAME,60 - minutes) #endif } if ((last_announce != minutes) && (hours == (FT_stop - 1)) && ((minutes == 30) || (minutes == 45) || (minutes == 55))) { last_announce = minutes #if LANG_FRE show_hudmessage(0,"Desactivation de %s dans %02d minutes^nTaper savexp^net a demain!!!",WC3NAME,60 - minutes) #endif #if LANG_GER show_hudmessage(0,"%s wird in %02d minuten inaktivirt^nType savexp^nand See you Tomorow!!!",WC3NAME,60 - minutes) #endif #if LANG_ENG show_hudmessage(0,"%s will be deactivated in %02d minutes^nType savexp^nand See you Tomorrow!!!",WC3NAME,60 - minutes) #endif } } else { if (warcraft3==false && FT_message) { #if LANG_FRE show_hudmessage(0,"%s (%s) - Inactif^nIl est:%02d:%02d^nTemps Restant: %d:%02d (prochaine carte: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_GER show_hudmessage(0,"%s (%s) - Inactive^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_ENG show_hudmessage(0,"%s (%s) - Inactive^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif } if (warcraft3==true && FT_message) { #if LANG_FRE show_hudmessage(0,"%s (%s) - Actif^nIl est: %02d:%02d^nTemps Restant: %d:%02d (prochaine carte: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_GER show_hudmessage(0,"%s (%s) - Active^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif #if LANG_ENG show_hudmessage(0,"%s (%s) - Active^nThe time is:%02d:%02d^nTimeleft: %d:%02d (nextmap: %s)",WC3NAME,WC3VERSION,hours,minutes,timeleft / 60, timeleft % 60,nextmap) #endif } } return PLUGIN_CONTINUE } //Future Model improvment for have MODEL instead of CSMODEL // Added by NeKo /*public model_race(id) { if (!warcraft3) return PLUGIN_CONTINUE new tid = read_data(2) if( (p_skills[tid][0] < 9) || (p_skills[tid][0] > 0)) changeskin(tid,3) else changeskin(tid,0) return PLUGIN_CONTINUE } */ //End Change public test(id){ if(ultimateused[id]) client_print(id,print_chat,"** Your ultimate has been used") else client_print(id,print_chat,"** Your ultimate has not been used") return PLUGIN_CONTINUE } /*public grenade_throw(greOwner,greIndex,greType){ if (greType==CSW_HEGRENADE){ client_print(greOwner,print_chat,"[DEBUG] you threw a nade by grenade_throw") new parm[1] parm[0] = greOwner new bool:allow=false if(((p_skills[parm[0]][0] == 9 && race9Options[2] == 3) || p_skills[parm[0]][0] == 3) && p_skills[parm[0]][2]){ if(playeritem2[parm[0]]==INFERNO){ if(get_cvar_num("FT_glove_orc_damage")) allow=true else allow=false } else allow=true } if(allow) set_task(0.1,"hethrowevent",89,parm,1) } return PLUGIN_CONTINUE } */ public cancel_fullupdate() return PLUGIN_HANDLED public plugin_init() { gmsgDeathMsg = get_user_msgid("DeathMsg") gmsgFade = get_user_msgid("ScreenFade") gmsgShake = get_user_msgid("ScreenShake") gmsgStatusText = get_user_msgid("StatusText") gmsgIcon = get_user_msgid("StatusIcon") // Added by NeKo register_plugin(WC3NAME,WC3VERSION,WC3AUTHOR) register_cvar("War3: Frozen Throne", WC3VERSION,FCVAR_SERVER) new WC3AMXCVAR[32] format(WC3AMXCVAR,31,"%s %s", WC3NAME,WC3VERSION) register_cvar("amx_war3_version", WC3AMXCVAR,FCVAR_SERVER) register_clcmd("amx_wc3","amx_wc3_launch",-1,"Activate/Desactivate Controler & Wc3 Plugin") // Added by NeKo register_clcmd("war3menu","WC3_Menu",-1,"- Show Warcraft 3 Frozen Throne Player menu") register_clcmd("changerace","change_race",-1,"changerace") register_clcmd("selectskill","select_skill",-1,"selectskill") register_clcmd("skillsinfo","skills_info",-1,"skillsinfo") register_clcmd("resetskills","resetskills",-1,"resetskills") register_clcmd("resetxp","amx_resetxp",-1,"resetxp") register_clcmd("itemsinfo","items_info",-1,"itemsinfo") register_clcmd("itemsinfo2","items_info2",-1,"itemsinfo2") register_clcmd("war3help","war3_info",-1,"war3help") register_clcmd("war3vote","war3_vote",-1,"war3vote") register_clcmd("ultimate","ultimate",-1,"ultimate") register_clcmd("shopmenu","shopmenu",-1,"shopmenu") register_clcmd("shopmenu2","shopmenu2",-1,"shopmenu2") register_clcmd("rings","rings5",-1,"rings") register_clcmd("ability","ability",-1,"ability") register_clcmd("say","check_say") register_clcmd("say_team","check_say") register_clcmd("shield","shieldbuy") register_clcmd("drop", "hook_drop") register_clcmd("dropitem","dropitem") register_clcmd("dropitem2","dropitem2") register_concmd("amx_givexp","amx_givexp",-1,"amx_givexp") register_concmd("amx_savexp","amx_savexp",-1,"amx_savexp") register_concmd("amx_givemole","amx_givemole",-1,"amx_givemole") register_concmd("playerskills","player_skills",-1,"playerskills") register_srvcmd("display_race_select","display_race_select") // For internal use only (don't use this command) register_srvcmd("amx_takexp","amx_takexp") // For internal use only (don't use this command) register_srvcmd("changexp","changeXP") // For internal use only (don't use this command) // Log events: Requires AMX 0.9.3 or better register_logevent("event_player_action",3,"1=triggered") register_logevent("freezetimedone",2,"0=World triggered","1=Round_Start") register_logevent("end_round",2,"0=World triggered","1=Round_End") //register_event("SendAudio", "end_round", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw") //register_event("TextMsg", "end_round", "a", "2&#Game_C", "2&#Game_w") register_event("SendAudio", "T_win", "a", "2=%!MRAD_terwin") register_event("SendAudio", "CT_win", "a", "2=%!MRAD_ctwin") register_event("StatusValue","showStatus","be","1=2","2!0") register_event("StatusValue","hideStatus","be","1=1","2=0") register_event("StatusValue","setTeam","be","1=1") register_event("StatusValue","showRank","bd","1=2") register_event("StatusValue","show_race","be","1=2","2!0") // Added by NeKo register_event("StatusIcon","BuyZone","be","2=buyzone") register_event("StatusIcon", "got_defuse", "be", "1=1", "1=2", "2=defuser") register_event("WeapPickup","check_weap","b") register_event("CurWeapon","change_weapon","be","1=1") register_event("DeathMsg","death","a") register_event("ResetHUD", "new_round", "b") register_event("Damage", "damage_event", "b", "2!0") register_event("ArmorType", "armor_type", "be") //register_event("ResetHUD", "model_race", "b") // Added by NeKo register_event("TextMsg","restart_round","a","2&#Game_will_restart_in") //if(is_running("cstrike")) // register_event("TextMsg","nade_thrown","bc","2&#Game_radio", "4&#Fire_in_the_hole") //else register_event("SendAudio","nade_thrown","bc","2=%!MRAD_FIREINHOLE") // register_event("SendAudio", "nade_thrown", "bc", "4&#Fire_in_the_hole") register_event("TextMsg", "game_commencing", "a", "2&#Game_C") register_event("TextMsg", "Target_Bombed", "a", "2&#Target_Bombed") register_event("TextMsg","setSpecMode","bd","2&ec_Mod") register_event("TextMsg", "FT_controller", "a", "2&#Game_C") // Added by NeKo #if STEAM_POWERED register_event("SetFOV","zoomed2","be","1<90") register_event("SetFOV","unzoomed","be","1=90") #endif register_cvar("FT_race_icons","1") // race icons on players register_cvar("FT_level_icons","1") // level icons on players register_cvar("FT_showblood","0") // Added by NeKo register_cvar("FT_start","23",FCVAR_SERVER) // hour of start plugin // Added by NeKo register_cvar("FT_stop","7",FCVAR_SERVER) // hour of stop plugin // Added by NeKo register_cvar("FT_control","0") // controler // Added by NeKo register_cvar("FT_message","0") // message projector // Added by NeKo register_cvar("FT_ultimatedelay", "0") register_cvar("FT_min_b4_XP","2") register_cvar("FT_no_orcnades","0") register_cvar("FT_centerhud","1") register_cvar("FT_saveby","0") register_cvar("FT_position","0") register_cvar("FT_9raceRandom","1") register_cvar("FT_9race","1") register_cvar("FT_8race","0") register_cvar("FT_5race","0") register_cvar("FT_4race","0") register_cvar("FT_glove_timer","10") register_cvar("FT_competitive","0") register_cvar("FT_glove_orc_damage","0") register_cvar("FT_round_win_XP","50") register_cvar("FT_healing_range","750") register_cvar("FT_xp_radius","750") register_cvar("FT_explosion_max_damage","50") register_cvar("FT_explosion_range","300") register_cvar("FT_blast_radius","250") register_cvar("FT_bigbadvoodoo_cooldown","35.0") register_cvar("FT_flamestrike_cooldown","35.0") register_cvar("FT_locusts_cooldown","35.0") register_cvar("FT_chainlightning_cooldown","35.0") register_cvar("FT_teleport_cooldown","35.0") register_cvar("FT_entanglingroots_cooldown","35.0") register_cvar("FT_kill_objectives","0") register_cvar("FT_reset_skills","1") register_cvar("FT_show_player","1") register_cvar("FT_show_icons","1") register_cvar("FT_hostage_touch_bonus","1") register_cvar("FT_attempt_defuse_bonus","1") register_cvar("FT_bomb_event_bonus","1") register_cvar("FT_VIP_spawn_bonus","1") register_cvar("FT_hostage_kill_xp","1") register_cvar("FT_headshot_bonus","30") register_cvar("FT_defuser_kill_bonus","50") register_cvar("FT_VIP_escape_bonus","50") register_cvar("FT_hostage_touch_bonus","1") register_cvar("FT_kill_bomb_carrier_bonus","50") register_cvar("FT_bombplanterxp","50") register_cvar("FT_defusexp","50") register_cvar("FT_hostagexp","50") register_cvar("FT_killrescuemanxp","50") register_cvar("FT_xpbonus","150") register_cvar("FT_warn_suicide","1") register_cvar("FT_no_gloves_on_ka","1") register_cvar("FT_blink_radius","500") register_cvar("FT_blink_delay","15.0") register_cvar("FT_blink_protection","1") register_cvar("FT_blink_diziness","1") register_cvar("FT_blink_cooldown","3.0") register_cvar("FT_blinkenabled","1") register_cvar("FT_blinkstartdisabled","1") // Blink is disabled for the first 15 seconds of each round register_cvar("FT_spec_info","1") // Show spectating information register_cvar("FT_items_in_hud","0") // If set to 1, shows items w/ a HUD message register_cvar("FT_objectives","1") // Displays objectives (when gaining XP, ie: rescue hostage) register_cvar("sv_mysql_auto_pruning","0") // Autoprunes MySQL database for old values register_cvar("mp_savexp","0",FCVAR_SERVER) register_cvar("mp_xpmultiplier","1.0") register_cvar("mp_weaponxpmodifier","1") register_cvar("sv_warcraft3","1",0) register_cvar("sv_restrictultimate","0",0) register_cvar("sv_allowwar3vote","0") register_cvar("mp_grenadeprotection","0") register_cvar("sv_mysql_save_end_round","0") // NOT RECOMMENDED, may cause lag register_cvar("sv_daysbeforedelete","31") register_cvar("sv_mysql","0") register_cvar("sv_mysqltablename","war3users") register_cvar("amx_vote_delay","60") register_cvar("amx_vote_time","10") register_cvar("amx_vote_answers","1") register_cvar("FT_mysql_host","127.0.0.1") register_cvar("FT_mysql_user","root") register_cvar("FT_mysql_pass","") register_cvar("FT_mysql_db","amx") register_cvar("amx_votewar3_ratio","0.70") set_task(15.0, "FT_controller",0,"",0,"b") // Added by NeKo set_task(0.0, "FT_controller",8888,"",0,"b") // Added by NeKo set_task(10.0,"check_war3",456,"",0,"b") set_task(1.0,"check_war3",457) set_task(3.0,"set_longtermxp",458) set_task(3.0,"set_shorttermxp",458) set_task(2.0,"set_mysql",324) set_task(0.6,"set_variables",822) set_xpmultiplier() #if defined _amxmodx_included // Execute War3FT config file new war3files[64] get_customdir(war3files, 63) format(war3files, 63, "%s/warcraft3FT/war3FT.cfg", war3files) server_cmd("exec %s",war3files) #else server_cmd("exec addons/amx/war3FT.cfg") #endif #if defined _amxmodx_included // Execute MySQL config file new configdir[64] get_configsdir(configdir, 63) server_cmd("exec %s/mysql.cfg", configdir) #else server_cmd("exec addons/amx/mysql.cfg") #endif #if LANG_GER register_menucmd(register_menuid("\yWaehle eine Faehigkeit:"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9),"set_skill") register_menucmd(register_menuid("\yTeleportiere zu:"),1023,"set_target") register_menucmd(register_menuid("\yGegenstand kaufen 2"),1023,"buy_item2") register_menucmd(register_menuid("\yGegenstand kaufen"),1023,"buy_item") register_menucmd(register_menuid("\yWähle deine Rasse"),1023,"set_race") #else register_menucmd(register_menuid("\ySelect Skill"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9),"set_skill") register_menucmd(register_menuid("\yTeleport To:"),1023,"set_target") register_menucmd(register_menuid("\yBuy An Item"),1023,"buy_item2") register_menucmd(register_menuid("\yBuy Item"),1023,"buy_item") register_menucmd(register_menuid("\ySelect Race"),1023,"set_race") #endif register_menucmd(register_menuid("Warcraft 3 Plugin:") ,(1<<0)|(1<<1),"vote_count") register_menucmd(register_menuid("\yWarcraft 3 Frozen Throne Menu"),1023,"do_wc3menu") register_menucmd(register_menuid("\ySkills Options"),1023,"do_skillsmenu") register_menucmd(register_menuid("\yItem Options"),1023,"do_itemmenu") register_menucmd(register_menuid("\yRace Options"),1023,"do_racemenu") register_menucmd(register_menuid("\yAdmin Menu"),1023,"do_adminmenu") register_menucmd(register_menuid("\yGive Players XP"),1023,"do_playerxpmenu") register_menucmd(register_menuid("\yTeam XP Menu"),1023,"do_teamxpmenu") register_menucmd(-34,(1<<8),"shieldbuy") // they bought a shield // Menu Information register_menucmd(register_menuid("BuyItem"),(1<<2),"flashbuy") register_menucmd(register_menuid("BuyItem"),(1<<3),"hebuy") // Buy HE (old style) register_menucmd(-34,(1<<2),"flashbuy") register_menucmd(-34,(1<<3),"hebuy") // Buy HE (VGUI) register_clcmd("flash", "flashbuy") register_clcmd("hegren", "hebuy") // Buy HE (Steam) register_clcmd("fullupdate", "cancel_fullupdate") // Buy HE (Steam) // Development commands register_clcmd("test", "test") register_clcmd("test2", "test2") } // register_menucmd(-34,(1<<4),"sgBuy") // Buy SG (VGUI) // register_clcmd("sgren", "sgBuy") // Buy SG (Steam) // register_menucmd(register_menuid("BuyItem"),(1<<4),"sgBuy") // Buy SG (old style) // Various stocks from various places stock distancebetweenvecs(origin[3],origin2[3]){ new distance = sqrt(sq(origin2[0]-origin[0])+sq(origin2[1]-origin[1])+sq(origin2[2]-origin[2])) return distance } stock sq(num) { return (num*num) } stock diff(num,num2){ if(num>num2) return (num-num2) else return (num2-num) return 0 } stock cmd_target2(id,const arg[]) { new player = find_player("bl",arg) if (player){ if ( player != find_player("blj",arg) ){ console_print(id,"There are more clients matching to your argument") return 0 } } else if ( ( player = find_player("c",arg) )==0 && arg[0]=='#' && arg[1] ) player = find_player("k",str_to_num(arg[1])) if (!player){ console_print(id,"Client with that name or userid not found") return 0 } return player } // The Following Stock is from Asskickr's include file: stock logKill(attacker, victim, weaponDescription[] ) { //Save Hummiliation new namea[24],namev[24],authida[20],authidv[20],teama[8],teamv[8] //Info On Attacker get_user_name(attacker,namea,23) get_user_team(attacker,teama,7) get_user_authid(attacker,authida,19) //Info On Victim get_user_name(victim,namev,23) get_user_team(victim,teamv,7) get_user_authid(victim,authidv,19) //Log This Kill log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", namea,get_user_userid(attacker),authida,teama,namev,get_user_userid(victim),authidv,teamv, weaponDescription ) }